我跟随Nerd Dinner tutorial,因为我在学习ASP.NET MVC,而我目前在Step 3: Building the Model上。本节的一部分讨论如何将验证和业务规则逻辑与模型类集成。这一切都很合理。但是,在这个源代码的情况下,作者只验证一个类:晚餐。具有LINQ,部分类和抽象类的类结构
我想知道的是,说我有多个类需要验证(晚餐,客人等)。它似乎并不聪明,我多次在局部类这两种方法写:
public bool IsValid
{
get { return (GetRuleViolations().Count() == 0); }
}
partial void OnValidate(ChangeAction action)
{
if (!IsValid)
{
throw new ApplicationException("Rule violations prevent saving.");
}
}
我想知道的是,你可以创建一个抽象类(因为“GetRuleViolations”需要单独实施)并扩展一个部分类?我想是这样的(基于他的例子):
public partial class Dinner : Validation {
public IEnumerable<RuleViolation> GetRuleViolations() {
yield break;
}
}
这并不是“感觉”的权利,但我想与SO联系,以获得个人的意见比我聪明这一点。我也测试了它,似乎OnValidate方法的partial关键字导致了问题(可以理解)。这似乎不可能解决(但我很可能是错的)。
谢谢!
不是一个真正的直接回答你的问题,所以我会张贴它作为一个评论:如果你使用MVC 2,有数据注释来验证使用方式更简单的模型。见http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx – 2010-05-17 18:16:01
目前还不清楚你使用部分方法遇到了什么问题 - 如果你提供更多信息,有可能为您的问题提供更清晰的答案。 – LBushkin 2010-05-17 18:30:14
@Julien - 非常棒!谢谢。我知道这并没有回答我原来的问题,但这是我最终的结果。谢谢! – JasCav 2010-05-17 20:35:56