在mvc中从URL检索对象

时间:2016-09-15 14:36:28

标签: asp.net-mvc

这是针对一个学校项目,我并不完全理解我应该做什么,所以我会解释老师告诉我的内容以及到目前为止我做了什么,希望你们能帮忙。 为了检查程序是否成功,教师希望手动将数字添加到页面的URL中。 我需要取这个数字,从url中提取它,然后将它植入一个方法中,这样它就会解密一个具有相同ID号的消息(我不知道他打算怎么做或激活所述方法)。 这是我写的: 在DataModel中:

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>

1 个答案:

答案 0 :(得分: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,但我也跟着。希望这有帮助,祝你好运。