2016-09-15 118 views
0

这是一个学校项目,我并不真正明白我应该做什么,所以我会解释老师告诉我的和我到目前为止做了什么,希望你们可以帮忙。 为了检查程序是否成功,教师希望手动向页面的网址添加一个数字。 我需要采取这个数字,从网址中提取它,然后植入它的方法,以便它将解密具有相同ID号码的消息(我不知道他打算如何执行或激活所述方法)。 这里是我写的: 在数据模型:从mvc中的URL中检索对象

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可选参数。检查App_Start文件夹中的RouteConfig.cs。

所以你应该能够将它作为一个参数添加到你的控制器动作结果中。

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

另外,不知道你为什么在这里使用可空int,但我效仿了。希望这有帮助,祝你好运。

+0

好吧,现在我只需手动添加一个数字到URL的末尾?如果我按下输入它应该启动该方法? –

+0

哦,我正在使用一个空的int,因为这是老师让我做的事,以防他不会写任何东西。真的,我不知道他想让我做什么。 那么,我需要改变的网址,使其工作? –

+0

是的,添加{controllerName}/singlmsgdecrptn/{id}会调用您的方法将id提供给变量。使用可空的int意味着将调用此方法,无论它们是否在URL字符串中提供int或not(null)。假设你没有另一个同名的方法不需要。因此,如果没有输入ID值,该方法仍然会运行并为GetMessage方法提供一个空值。我不能说这是不是不正确或不正确,因为我不知道结果应该是什么。 – Dillon