【发布时间】:2011-09-27 01:24:06
【问题描述】:
asp.net mvc 中一个常见的推荐做法是 you should not send your business models to your views.. 而您应该创建特定于每个视图的视图模型。
完成后,您在控制器中调用 ModelState.IsValid 方法,您实际上是在检查视图模型的有效性,而不是业务对象。
处理这个问题的常规方法是什么?
public class Person
{
public int ID {get; set;};
[Required]
public string Name {get; set;}
[Required]
public string LastName {get; set;}
public virtual ICollection<Exam> Exams {get; set;}
}
public class PersonFormViewModel
{
public int ID {get; set;};
[Required]
public string Name {get; set;}
[Required]
public string LastName {get; set;}
}
这正是我现在所拥有的,但我不确定 [Required] 属性是应该出现在两个模型上还是只出现在 ViewModel 上还是只出现在业务模型上。
感谢您提供有关此问题的任何提示。
更多链接支持我的主张,即始终使用视图模型是一种常见的良好做法。
How to add validation to my POCO(template) classes
http://blogs.msdn.com/b/simonince/archive/2010/01/26/view-models-in-asp-net-mvc.aspx
【问题讨论】:
-
你的“商业模式”到底是什么?
-
Person 是一个由 EntityFramework 跟踪的类。 PersonViewModel 显然不是……阅读我链接的博客文章,您将了解我试图遵循的做法……因此验证逻辑应该去哪里的问题。
-
谢谢 - 抱歉,我扫描了这篇文章并在其中搜索了“商业模式”,但没有找到任何结果。
-
这可能不是阅读文章的最佳方式......无论如何。 blogs.msdn.com/b/simonince/archive/2010/01/26/…
标签: asp.net-mvc validation viewmodel