【发布时间】:2017-07-30 07:26:35
【问题描述】:
ASP.NET MVC 允许以非常有用的方式生成强类型 URL,例如:
<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 中实现它的任何想法,或者为什么如果无法实现,那么为什么?
【问题讨论】: