是正确使用强类型的部分视图?

时间:2009-08-13 15:11:18

标签: asp.net-mvc oop strongly-typed-view

我正在ASP.NET MVC中开发一个小应用程序。

这个应用程序有很多“HTML片段”,它们使用了很多次,但有一些差异。

对于这些作品,我使用强类型部分视图

我的问题是:这是在View层重用代码的正确方法吗?使用偏见视图是否有些无关紧要?

非常感谢。

4 个答案:

答案 0 :(得分:3)

就我个人而言,我认为这是减少HTML重复并一直这样做的好方法。只是避免使用嵌套母版页等来处理它们。

根据经验,您不应该嵌套部分视图。

答案 1 :(得分:2)

我发现强类型视图,无论是“完整”还是部分视图都非常有用。否则你会遇到很多ViewData代码,这些代码不是很难调试。

如果你发现自己跳过很多箍以使模型正常工作,可以考虑将较小的模型包装在更大的“上下文”类型对象中:

public class ViewModelA {
    public string Name { get; set; }
}

public class ViewModelB {
    public int Id { get; set; }
}

public class ViewModelContext {
    public ViewModelA { get; set; }
    public ViewModelB { get; set; }
}

让您的视图以ViewModelContext作为类型。这样您就可以快速访问所有其他模型。

答案 2 :(得分:1)

通常我在MasterPage中放了很多常用代码。我使用部分视图来获得更大,独立的功能单元。例如,在多个但不是所有页面上重用的网格或标题登录“控件”。有时它是两者的结合。例如,我的主要未经身份验证的菜单项出现在MasterPage标记中,但我对经过身份验证的菜单项使用部分视图,其中包含根据用户角色处理显示哪些项目的逻辑。

您可能想要考虑的另一件小HTML代码段是HtmlHelper扩展。我发现这是设置特定类型的HTML元素的好方法。例如,我有一个扩展,它将添加一个“按钮”,可以启用javascript(渲染为锚点)或禁用(在noscript标记内部呈现按钮)。在我看来,这种事情在我看来更好,而不是局部视角,因为它不是任何事物的“视角”。

答案 3 :(得分:0)

我认为这是一件好事。特别是如果你想让你的不同页面使用相同的行为:例如,我将我的mvccontrib寻呼机放在共享文件夹中,这样我的所有寻呼机看起来都是一样的。

目前我对部分视图只有一个不便之处:当使用局部视图在ajax中更新我的容器的一部分时,此部分视图的javascript并不总是被考虑在内。