2013-04-02 68 views
0

第一MVC4項目,我已經打了緩衝區...MVC4 ActionLink的不傳遞參數

我希望能夠這樣引用我的網站頁面;

菜單/子菜單/ DOCUMENT/ID

其中ID值是可選的,並且任何其他標記上結束時,模型將處理文檔部分,這將是作爲文本,例如,

HOME /歡迎/歡迎到我們的店

所以我有一個路線設置(這裏只有1路)

routes.MapRoute(
    name: "Default", 
    url: "{menu}/{submenu}/{document}/{id}", 
    defaults: new { 
     controller = "Page", 
     action= "Data", 
     menu = "", 
     submenu = "", 
     document = "", 
     id = ""} 

我有一個控制器;

public class PageController : Controller 
{ 

    // Default view option for documents 


    public ActionResult Data(string menu, string submenu, string document, string parameters) 
    { 


     // Set the View to use rather than it default; 
     string thisView = "Data"; 

     return View(thisView); 
    } 

} 

我們有引用_MenuPartial.cshtml文件

@model MyNameSpace.Models.PageModel 
<ul> 
    @foreach (var item in Model.Menus.MainMenu) 
    { 
     <li>@Html.ActionLink(item.Label, "Page", "Data", new 
      { 
       menu = "MENU", 
       submenu = "SUBMENU" 
      }, 
      null 
      ) 
     </li> 
    } 
</ul> 

上述所有正確的文本等動態地寫出我的主菜單_Layout.cshtml文件等

但是,當我點擊一個標籤時,這條路線似乎愉快地映射到PageControllers數據函數,但是字符串菜單,字符串子菜單,字符串文檔,字符串參數的值是「」或爲空。

如果我修改了網址,那麼他們會正確傳入。

我敢肯定,這只是對我應該做的事情的一種誤解,我希望一旦某種靈魂發現了它,我就會失去活力!

感謝 安迪

回答

2

先給文檔和id默認路由中的價值UrlParameter.Optional,並給文件和ID參數在動作的默認值「」(string document = "")。這應該允許路由協調動作鏈路路由數據與路由。