2014-05-08 49 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

相關問題