如何在asp.net mvc布局页面中使用查询字符串

时间:2014-05-08 11:14:32

标签: asp.net-mvc asp.net-mvc-routing

我对在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 });

提前致谢。

1 个答案:

答案 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> 

如果您需要更多说明,请与我们联系。