ASP.NET MVC允許產生像stongly鍵入URL的非常有用的方法:是否支持像ASP.NET MVC那樣的NancyFx反向路由?
<a href="@(Url.Action<AccountSettingsController>(c => c.BusinessInfo()))">Business info</a>
甚至:
<a href="@(Url.Action<SomeOtherController>(c => c.SomeActionMethod(id, paramX, paramY)))">Business info</a>
使用簡單的自定義URL幫手:
public static string Action<TController>(
this UrlHelper urlHelper,
Expression<Action<TController>> action,
string fragment = null
) where TController : BaseController
{
var routeValues = InternalExpressionHelper.GetRouteValuesFromExpression(action);
var url = UrlHelper.GenerateUrl(
routeName: null,
actionName: null,
controllerName: null,
protocol: null,
hostName: null,
fragment: fragment,
routeValues: routeValues,
routeCollection: urlHelper.RouteCollection,
requestContext: urlHelper.RequestContext,
includeImplicitMvcValues: true
);
return url;
}
它允許改變一個地方的URL映射(RouteConfig)以及任何控制器和動作重構並不意味着您需要去更新每個鏈接。
我喜歡NancyFx,因爲它的簡單性和良好的IoC開箱即用,但是我不確定爲什麼NanxyFx不支持反向路由(基於動作名稱生成URL),所以它是可能的爲它創建一些靜態類型的幫助器。
任何想法如何實現它在NancyFx或者爲什麼,如果這是不可能的事,爲什麼?
我對自己的項目採取了完全相同的方法。對於辦公室工作,我們使用ASP.NET MVC,並要求將此項目放到其他菜單中,重命名它,使用菜單名稱同步URL的頻率非常高,並且在這種情況下命名路線有所幫助。 – Zelid
啊,這使得它更難,我只是讓他們改變名稱,但保持相同的網址。特別是如果它是一個公共場所。 – Phill