如何获取View所在的区域(或路径)?

时间:2014-05-27 20:04:17

标签: t4 asp.net-mvc-areas asp.net-mvc-scaffolding

问题:

我正在为脚手架视图定制MVC 5模板。

我需要能够获取正在创建视图的区域的区域名称。

EG,我希望能够为Url Action参数设置变量areaName的值:

Url.Action("Index", "<#= ViewDataTypeShortName#>s", new { area = "<#= areaName #>", page<#= ViewDataTypeShortName#>s = x }), ViewContext, NormalizePath("~/Areas/<#= areaName #>/Views/<#= ViewDataTypeShortName#>s/"))

在控制器中,我可以这样做:

<#   
   var areaName = GeneratedTextTransformation.AreaName;
#>

但是在View T4模板中,这不可用。

那么我如何得到我正在创建视图的区域的名称?

编辑:

因为MVC使用约定优于配置,所以如果我有办法获取正在创建的View文件的路径,我可以获得该区域(如:

/Areas/[Area Name]/Views/

所以问题简化为:

问题:

如何获取T4 ASP.NET MVC脚手架创建View的路径?

1 个答案:

答案 0 :(得分:0)

我已经通过在ViewBag.AreaName中使用AreaName属性(在控制器的T4模板中可用)并在视图中读取它来解决这个问题。

不漂亮,但它会起作用。

但是,我很快就会知道如何在我的T4代码中访问正在创建文件的区域。请参阅我的问题的编辑。