是否有創建強類型控制器操作的方法?例如:編譯時檢查控制器方法的動作鏈接
在控制器中使用:
aClientLink=Url.Action("MethodName", "ControllerName", new { Params... });
我想用:
aClientLink=Url.Action(Controller.MethodName,ControllerName);
我不想重新創建輪。我相信有人有一些聰明的解決方案。這將允許我將編譯時間檢查添加到控制器方法。
是否有創建強類型控制器操作的方法?例如:編譯時檢查控制器方法的動作鏈接
在控制器中使用:
aClientLink=Url.Action("MethodName", "ControllerName", new { Params... });
我想用:
aClientLink=Url.Action(Controller.MethodName,ControllerName);
我不想重新創建輪。我相信有人有一些聰明的解決方案。這將允許我將編譯時間檢查添加到控制器方法。
您可以創建自己的HtmlHelper
使用表達式的擴展方法(與用於引用模型屬性的方法相同)。
@* An expression used to indicate which property of the model should be
examined. It may or may not actually be executed. *@
@Html.IdFor(o => o.FirstName)
@* Don't actually evaluate the expression, just parse it for the method name *@
@Url.ActionFor(o => o.ControllerMethod())
你可以看看MVC源內搭表達式作爲輸入值的輔助方法的例子,你可以看到我answer here如何檢索從一個表達的對象屬性的元數據。
但是...
用於在視圖中,我認爲,這樣的做法捆綁你的看法過於嚴格的控制。我不喜歡神奇的琴絃,但他們確實提供了完全的解耦。
目前還不清楚您是否想在控制器內部使用這樣的方法,在這種情況下,關注點的分離變得不是問題。你仍然會失去某些能力,例如別名動作名稱的能力。
我試過轉換一個HtmlHelper擴展器,但是這是所有的客戶端,並且不會在控制器中作爲上下文在不允許我定義控制器名稱/方法的靜態類中使用......我將使用stupid const字符串值直到我能算出來。現在沒有更多的時間了。 –
我喜歡它---並會嘗試它。解決方案。但! –