我对在asp.net mvc中理解查询字符串和路由概念感到困惑,如果有人可以帮忙,我将不胜感激。
我的问题是:
我有一个登录页面,用户将在其中输入用户名,密码和ID。成功登录后,我喜欢将ID传递给我的个人资料页面。现在,个人资料页面是布局页面的一部分以及另外两个链接。
<nav class="main">
<ul class="menu" >
<li>@Html.ActionLink("Profile", MVC.Profile.Index(), new { Id = Request.QueryString["Id"].ToString() })</li>
<li>@Html.ActionLink("Configuration", MVC.Configuration.Index(),new { Id = Request.QueryString["Id"].ToString() })</li>
<li>@Html.ActionLink("Transaction", MVC.Transaction.Index(), new { Id = Request.QueryString["Id"].ToString() })</li>
</ul>
</nav>
在我的登录页面中,我使用以下代码将用户重定向到“个人资料”页面。
返回RedirectToAction(“Index”,“Profile”,new {Id = viewModel.Id});
现在我如何将相同的值传递给配置和事务页面,它们只是布局页面上的动作链接。我想使用如下的Request.QueryString:
new { Id = Request.QueryString["Id"].ToString()
但这是抛出对象引用异常。
我的路由看起来像这样:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional });
提前致谢。
答案 0 :(得分:0)
因此,在您重定向到Index
控制器的Profile
操作后,请确保您的操作采用如下所示的int
参数并将其返回到Profile
视图:
public ActionResult Index(int id)
{
return View(id);
}
在个人资料Index
视图中呈现您的链接,如下所示:
@model int
<nav class="main">
<ul class="menu" >
<li>@Html.ActionLink("Profile", "Index", new { Id = @Model })</li>
<li>@Html.ActionLink("Configuration", "Index",new { Id = @Model })</li>
<li>@Html.ActionLink("Transaction", "Index", new { Id = @Model })</li>
</ul>
</nav>
如果您需要更多说明,请与我们联系。