在不断发展的MVC应用程序中,我希望能够对控制器名称及其用于构造url的操作方法名称的正确性(或至少存在)进行编译器检查。那么
Url.Action("Index", "About")
变为:
Url.Action("Index", Helper.GetControllerNameFromType(typeof(AboutController))
保证AboutController
类型存在。我可以处理控制器名称,因为从类型和名称可以获得控制器名称。
但是,使用action方法,我没有看到类型安全/编译器检查的方法来获取方法名称。有什么建议吗?
答案 0 :(得分:7)
MvcContrib UrlHelper
extension。它应该让你这样做:
Url.Action<AboutController>(c => c.Index())
答案 1 :(得分:0)
您可以创建一个带有泛型或类型的扩展方法,并通过约定获取名称。像
这样的东西string ConventionBasedUrlAction(string action, Type controllerType)
{
return Url.Action(action, typeof(controllerType).Name.Replace("Controller", string.empty));
}
如果它是扩展名,您可以保留Url.
语法并在代码中自定义约定,同时保留原始备选方案。
编辑:MvcContrib已经拥有它,正如蒂姆指出的那样:)