T4MVC是否支持基于属性的路由?
我已将RoutePrefixAttribute
应用于我的MVC 5控制器,并在我的操作中应用了Route
属性。目前,T4MVC似乎没有提供基于这些属性的路由。它提供的路由是/Area/Controller/Action.
文件夹结构是:
/
Areas
Ratio
Controllers
RatioSet
PresetGroupController.cs
Views
RatioSet
GroupDetails.cshtml
控制器:
[RoutePrefix("Ratio/RatioSet/Preset/Group")]
public partial class PresetGroupController
{
[Route("Details")]
public virtual ActionResult Details()
{
//.....
return View(MVC.Ratio.RatioSet.Views.GroupDetails, model);
}
}
现在,如果我尝试以下内容:
return RedirectToAction(MVC.Ratio.PresetGroup.Details());
我收到404错误,因为请求的网址是:
<app_root>/Ratio/PresetGroup/Details
这是&#34;默认&#34;路由,而不是正确的属性指定:
<app_root>/Ratio/RatioSet/Preset/Group/Details
那么,T4MVC是否仅适用于从文件夹结构推断的基于约定的路由,而不是通过属性指定的任何路由?
答案 0 :(得分:1)
我知道这是一个老问题,但我遇到了同样的问题,最后修复了将RouteArea属性添加到Controller中。
这样的事情:
[RouteArea("Ratio")]
[RoutePrefix("Ratio/RatioSet/Preset/Group")]
public partial class PresetGroupController
{
[Route("Details")]
public virtual ActionResult Details()
{
//.....
return View(MVC.Ratio.RatioSet.Views.GroupDetails, model);
}
}
答案 1 :(得分:0)
您是否确认非T4MVC等效工作正常?如果是这样,那条线是什么样的?
请注意,T4MVC本身并不会生成路由,而是调用标准MVC框架方法来执行此操作。请参阅docs中的第1.1节。
我的猜测是你遇到了与T4MVC无关的问题。例如请参阅this issue,问题是注册电话的顺序。