我一直在使用以下内容来呈现控制器特定的内容:
<% if (ViewContext.Controller is MyNamespace.Controllers.Topic1Controller)
{ %>
[Content specific to Topic 1]
<% } %>
<% else if (ViewContext.Controller is MyNamespace.Controllers.Topic2Controller)
{ %>
[Content specific to Topic 2]
<% } %>
<% else
{ %>
[Default content]
<% } %>
这适用于控制器内容,因为我可以使用一个部分视图文件来托管此内容并保持整洁(而不必将其更改为不同的位置)。
但是,现在我想在页面(而不是控制器)级别上使用局部视图,并且能够改变内容(再次,将内容保存在一个文件中以便我可以编辑该文件),但是我如果/ else if / else语句特定于页面(或操作?),我无法弄清楚我该怎么做。
我想要完成的是与上面的代码相同,但特定于页面(第1页,第2页等),以便我的内容根据正在查看的页面在部分视图中更改。
任何帮助将不胜感激。我已经找了一些答案,但也许我只是没有正确地构建我的关键词。
答案 0 :(得分:1)
不要参考ViewContext.Controller
。视图应该尽可能愚蠢,绝对不应该检查控制器的类型。为什么你不想使用相同的视图?如果要共享内容,请使用母版页/嵌套母版页。渲染视图所需的所有参数都应在视图模型类中传递。
public class ViewModel {
int TopicDisplayVersion { get; set; }
...TopicDetails...
}
然后
Html.RenderPartial("Topic", model);