我正在ASP.NET MVC中开发一个小应用程序。
这个应用程序有很多“HTML片段”,它们使用了很多次,但有一些差异。
对于这些作品,我使用强类型部分视图。
我的问题是:这是在View层重用代码的正确方法吗?使用偏见视图是否有些无关紧要?
非常感谢。
答案 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并不总是被考虑在内。