2014-05-08 38 views
0

我在理解asp.net mvc中的查询字符串和路由概念时感到困惑,如果有人请帮忙,我将不胜感激。如何在asp.net mvc布局页面中使用查询字符串

我的问题是:

我有一个登录页面,用户将进入用户名,密码和ID。成功登录后,我喜欢带上Id并将它传递给我的Profile页面。现在,个人资料页面是布局页面的一部分以及其他两个链接。

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

从我的登录页面我使用以下代码将用户重定向到配置文件页面。

return RedirectToAction(“Index”,“Profile”,new {Id = viewModel.Id});

现在我怎么能同一个值传递给配置和交易页面,他们是在布局page.I想用的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

所以要重定向到您的Profile控制器的Index动作后,请确保您的动作发生在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> 

让我知道你是否需要更多的解释。

+0

你好,谢谢,是我的配置文件控制器以id为参数。但这些操作链接是布局页面的一部分。你是否建议我从布局页面中删除这些链接并将其放入每个单独的页面? – Vin05

+0

@ Vin05不可以。您可以在布局页面中做同样的事情,它的工作原理也是一样的。你的'模型'将充满你从你的控制器'View(id)'发送的任何数据。 – lbrahim

+0

@ Vin05我已经在这里上传了一个示例应用程序:http://www.sendspace.com/file/crarpc – lbrahim

相关问题