2
我不喜歡Url.Action(「串」,「串),因此下面的擴展方法寫類型安全的URL行動
public static string Action<TController>(this UrlHelper urlHelper, Expression<Func<TController, object>> actionExpression)
{
var controllerName = typeof(TController).GetControllerName();
var actionName = actionExpression.GetActionName();
return urlHelper.Action(actionName, controllerName);
}
我用它在我的Razor視圖象下面這樣:
@{Url.Action<ClientController>(action => action.ClientDetails());}
它不呈現任何內容。我是否造成任何錯誤或任何地方我錯過了什麼?是否有可能,因爲我喜歡的類型安全的性質,而不是硬編碼actionnames和控制器做到這一點?
你吃過看看MvcContrib?這種東西已經實現了(幾次之前) –
System.Type沒有一個名爲GetControllerName的方法。你的'代碼要麼不會編譯,要麼會從實現的實現中受益(如果是這樣的話),當然同樣適用於getActionName –
我在Type for GetControllerName()上實現了一個擴展方法,並且我已經編譯了該項目到我所處的地步。我只是不確定如何在剃刀視圖中使用 – DotNetInfo