我想寫一個HtmlHelper來渲染帶有預設值的ActionLink,例如。從控制器內部使用Html.ActionLink和Url.Action(...)
<%=Html.PageLink("Page 1", "page-slug");%>
其中PageLink
是調用ActionLink
與已知的操作和控制,如功能。 「索引」和「頁面」。
由於HtmlHelper
和UrlHelper
不存在於Controller
或類內部,我如何從類內部獲取相對於動作的URL?
更新:鑑於額外三年累積的經驗,我現在有,這是我的建議是:只要使用Html.ActionLink("My Link", new { controller = "Page", slug = "page-slug" })
或更好,但
<a href="@Url.Action("ViewPage",
new {
controller = "Page",
slug = "my-page-slug" })">My Link</a>
您的擴展方法也許很可愛,短,但它增加另一個未經測試的失敗點和對新員工的新學習要求,無需增加任何實際價值。把它看作設計一個複雜的系統。爲什麼要添加另一個移動部分,除非它增加可靠性(否),可讀性(很少,一旦您閱讀更多文檔),速度(無)或併發(無)。
+1爲更新。我也會指出未來的搜索者從控制器內部調用Url.Action這個問題 - http://stackoverflow.com/questions/2031995/call-urlhelper-in-models-in-asp-net-mvc – brichins 2015-09-29 21:49:11