Asp.net MVC ViewContext(Controller v。实际页面)

时间:2011-02-19 16:04:03

标签: asp.net-mvc partial-views

我一直在使用以下内容来呈现控制器特定的内容:

<% 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页等),以便我的内容根据正在查看的页面在部分视图中更改。

任何帮助将不胜感激。我已经找了一些答案,但也许我只是没有正确地构建我的关键词。

1 个答案:

答案 0 :(得分:1)

不要参考ViewContext.Controller。视图应该尽可能愚蠢,绝对不应该检查控制器的类型。为什么你不想使用相同的视图?如果要共享内容,请使用母版页/嵌套母版页。渲染视图所需的所有参数都应在视图模型类中传递。

public class ViewModel {
    int TopicDisplayVersion { get; set; }
    ...TopicDetails...
}

然后

Html.RenderPartial("Topic", model);