是否可以将T4MVC与属性路由(RoutePrefix / Route)一起使用?

时间:2014-07-30 21:12:41

标签: asp.net-mvc-5 t4mvc

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是否仅适用于从文件夹结构推断的基于约定的路由,而不是通过属性指定的任何路由?

2 个答案:

答案 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,问题是注册电话的顺序。