如何使用标记的其余部分呈现视图名称和部分视图?

时间:2012-02-17 13:46:30

标签: asp.net-mvc asp.net-mvc-3

我想,特别是在调试构建配置中,例如,让视图和部分视图将其文件名发送到它们呈现的标记中。我可以使用一些容易获得的视图属性吗?或者我是否必须覆盖派生控制器中的View方法,以便在渲染时将此数据推送到视图中?

除此之外:目前我从 ViewModelBase 派生了我的所有视图模型,因此这可能是将此信息提供给呈现的HTML的一个向量,但我不是知道从哪里开始。

编辑:詹姆斯在下面的回答非常适合告诉我在哪里获取信息,以及如何呈现信息,但我会很感激如何在所有视图和部分中包含这些信息的一些建议。我意识到我可能不得不求助于一些低级框架编码,比如添加RenderPartial的重载,它会渲染一个我可以将视图名称标记到的容器元素,例如在我的第一个传递解决方案中执行以下操作布局和观点:

_Layout.cshtml:

<section id="main" data-viewname="@(ViewBag.BodyViewName)">
    @RenderBody()
</section>

[AllViews] .cshtml:

@{
    ViewBag.BodyViewName = this.VirtualPath;
    ViewBag.Title = "My Courses";
}

1 个答案:

答案 0 :(得分:0)

您可以使用VirtualPath属性,该属性是表示剃刀页面的WebPageBase类的成员。在视图或部分视图内部,您可以访问此类并显示其属性,如下所示:

@Html.Raw(this.VirtualPath)

修改

对于aspx视图引擎,您可以使用:

<% this.AppRelativeVirtualPath %>