我是新来的MVC.NET,似乎无法理解为什么我的验证函数没有被调用,它位于MyModel类中。验证方法没有在视图模型内部的模型上调用
为MyModel:
Public string Name { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
// validation logic which is not being called on post.
}
当我发帖的形式,实际上,我张贴我的ViewModel具有为MyModel的一个属性。
视图模型:
Public MyModel { get; set; }
控制器:
[HttpPost]
public ActionResult Index(ViewModel model)
{
// this is always true??
if(this.ModelState.IsValid) { blah blah }
}
它总是真实的原因是因为内部为MyModel我验证逻辑没有被从视图模型上的POST调用。
这可能是一个noob问题,但我不知道。谢谢你的帮助。
我没有时间发布代码,对不起,但看着“自定义模型粘合剂”。为'ViewModel'创建一个自定义模型绑定器,当'public ActionResult Index(ViewModel model)'被调用时执行。在自定义模型联编程序中,您将能够调用验证方法。 – 2014-10-20 18:08:39
只是扩大Jason的评论,[这SO帖子](http://stackoverflow.com/questions/6431478/how-to-force-mvc-to-validate-ivalidatableobject)应该给你一个想法如何去与'自定义式样黏结剂'。 – Michael 2014-10-20 18:23:16
嗯,这不是MVVM - 它是MVC。你的“ViewModel”是一个模型。控制器是...控制器。而cshtml文件是视图。模型 - 视图 - 控制器。用于Web应用程序的MVVM框架通常位于客户端。 Angular和Knockout是MVVM客户端框架的两个例子。 – Will 2014-10-20 18:58:16