2016-09-15 1 views
0

Это для школьного проекта, и я не совсем понимаю, что я должен делать, поэтому я объясню, что сказал мне учитель и что я сделал до сих пор, надеюсь вы, ребята, можете помочь. Чтобы проверить успех программы, учитель хочет вручную добавить номер к URL-адресу страницы. Мне нужно взять это число, извлечь его из URL-адреса, а затем внедрить его в метод, чтобы он расшифровал сообщение с тем же идентификационным номером (я не знаю, как он намеревается это сделать или активирует упомянутый метод). Вот что я писал: В DataModel:Извлечь объект из URL-адреса в mvc

public static void GetMessage (int? MesNum, out string MesSuc) 
{ 
    SqlConnection cnctn = new SqlConnection(cnctnstrng); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Connection = cnctn; 
    cmd.CommandText = "GetMessage"; 
    cmd.Parameters.Add("@LineNum", SqlDbType.Int); 
    SqlDataReader rd; 
    try 
    { 
     cnctn.Open(); 
     cmd.Parameters["@LineNum"].Value = MesNum; 
     rd = cmd.ExecuteReader(); 
     byte[] Message = (byte[])rd["MessageText"]; 
     if (Message != null) 
     { 
      MesSuc = chat.Models.DomainModels.Security.DecryptStringFromBytes(Message); 
     } 
     else 
     { 
      MesSuc = "Unable to decrypt Message"; 
     } 
    } 
    catch 
    { 
     MesSuc = "Unable to decrypt Message"; 
    } 
    finally 
    { 
     cnctn.Close(); 
    } 
} 

В контроллере:

public ActionResult singlmsgdecrptn() 
     { 
      string MesSuc; 
      chat.Models.DataModels.userdbmanip.GetMessage(*?*, out MesSuc); 
      return View(MesSuc); 
     } 

? где число предполагается прийти в В представлении:.

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>singlmsgdecrptn</title> 
</head> 
<body> 
    <div> 
     @ViewBag.MesSuc 
    </div> 
</body> 
</html> 

ответ

0

маршрутизация по умолчанию MVC принимает и ID необязательный параметр. Проверьте RouteConfig.cs в папке App_Start.

Поэтому вы должны просто добавить его в качестве параметра в результат действия ваших контроллеров.

public ActionResult singlmsgdecrptn(int? id) 
     { 
      string MesSuc; 
      chat.Models.DataModels.userdbmanip.GetMessage(id, out MesSuc); 
      return View(MesSuc); 
     } 

Кроме того, не уверен, почему вы используете обнуляемый int здесь, но я следовал его примеру. Надеюсь это поможет. Удачи.

+0

Итак, теперь я просто вручную добавляю номер в конец URL-адреса? И если я нажимаю кнопку ввода, он должен начать метод? –

+0

О, и я использую нулевой int, потому что это учитель сказал мне, если он ничего не напишет или что-то еще. На самом деле, я понятия не имею, что он хочет от меня. Так что мне нужно изменить в URL-адресе, чтобы заставить его работать? –

+0

Да, добавив {имя_контроллера}/singlmsgdecrptn/{id}, вы вызовете свой метод, передающий идентификатор переменной. Использование nullable int означает, что этот метод будет вызван, будут ли они содержать int или нет (null) в строке URL. Предполагая, что у вас нет другого метода с тем же именем, который не требуется. Поэтому, если введенное значение ID не будет введено, метод все равно будет запущен и предоставит null методу GetMessage. Я не могу сказать, является ли это неправильным или нет, поскольку я не знаю, какими должны быть результаты. – Dillon

Смежные вопросы