2014-01-22 23 views
1

路由定義:Html.ActionLink未填滿href屬性

context.MapRoute(
      name: "VeranderingsTraject", 
      url: "Detail/{action}/{id}/{viewDate}/{toekomstBeeldId}", 
      defaults: new { controller = MVC.Detail.Name, action = MVC.Detail.ActionNames.VeranderingsTraject, viewDate = UrlParameter.Optional, toekomstBeeldId = UrlParameter.Optional }, 
      namespaces: new[] { typeof(DetailController).Namespace } 
     ); 

DetailController:

public virtual ActionResult VeranderingsTraject(int id, DateTime? viewDate = null, int? toekomstBeeldId = null) 
    { ... } 

ActionLink的考慮:

目前的觀點實際上也從DetailController所以我認爲我不需要控制器名稱。由於它不起作用,我添加了它,但無濟於事。

@Html.ActionLink(linkText:"TEST LINK", actionName: "VeranderingsTraject", controllerName: "Detail", routeValues: new {id= 1, viewDate = Model.VersieDatum}, htmlAttributes: null) 

結果在瀏覽器中:

<a href=""> 
    TEST LINK 
</a> 

預期結果:

<a href="/Detail/VeranderingsTraject/1/{date, i need to encode the url i know)/"> 
    TEST LINK 
</a> 
+0

你使用剃刀語法,就是你也選擇什麼作爲視圖引擎爲您的看法? –

+0

是的,我選擇了剃鬚刀引擎,大部分工作正常。這只是不想工作的片段(動作鏈接) –

回答

1

所以經過一些閱讀左,​​右(謝謝谷歌)

看來,我的路由做完全錯誤。所以我清理了我的整個路由表,現在我得到了很多更好的結果,它仍然不是完美的,但它可以得到解決,這要歸功於其他ActionLink相關問題上給出的答案。對細節控制器的操作提供相同的視圖(不同對象之間的共享信息)我曾經爲每個視圖都有一個路由,因此無法確定正確的路由。

現在所有的10路是brougth這一個:

context.MapRoute(
      name: "Detail", 
      url: "Detail/{action}/{id}/{viewDate}/{toekomstBeeldId}", 
      defaults: new { controller = MVC.Detail.Name, action = MVC.Detail.ActionNames.Persoon, viewDate = UrlParameter.Optional, toekomstBeeldId = UrlParameter.Optional }, 
      namespaces: new[] { typeof(DetailController).Namespace } 
     ) 

生成的鏈接現在是以下幾點:

<a href="/Atlas/Detail/persoon?id=14&requestDate=01%2F22%2F2014%2000%3A00%3A00"></a> 

所以我只需要格式化該日期會好一點,然後閱讀直到改變/ persoon?id = ... to/persoon/14/01-22-2014 /但我已經看到了一些問題和解決方案來解決這個問題。

感謝您的閱讀和思考,希望這有助於有人