TryUpdateModel验证不在includeProperties中的字段

时间:2015-05-28 01:37:52

标签: asp.net-mvc linq entity-framework

我正在尝试使用TryUpdateModel在MVC控制器的数据库中保存几个字段。但是,它会一直返回false,因为它会在电子邮件地址和电话号码上验证无效格式。字段为空或空。在TryUpdateModel方法中,我指定了包含哪些字段,这些字段不是其中之一。我不确定为什么它在包含的属性之外进行验证?

Guid EmailGuid = new Guid(emailguidparam);
MyModelobject MyList= db.MyLists.FirstOrDefault(p => p.ReceiptGuid == EmailGuid);


var currentUsername = User.Identity.Name != null
                ? User.Identity.Name
                : "Anonymous";
MyList.Field1= true;
MyList.Field2= currentUsername;
MyList.Field3= DateTime.Now;

 success = TryUpdateModel(MyList, includeProperties: new string[] { "field1", "field2", "field3" });
       if(success){
            db.SaveChanges();
            return RedirectToAction("AnotherActionController", new { success = false, message = "Thanks." });
       }

成功总是错误的,因为除了我指定的内容之外,它还在验证其他字段。任何人都知道如何解决这个或为什么它验证其他领域?

1 个答案:

答案 0 :(得分:0)

我认为除了缺乏对MVC和实体框架的完整理解之外,我还想出了我的场景中出了什么问题。它验证的字段有一个空字符串。尽管如此,字符串是空的;它仍然得到验证。为了不让模型验证这些字符串(有效的电话和/或电子邮件地址),字符串必须为NULL。在调用TryUpdateModel之前,我检查了String.Empty的字段,然后将其设置为NULL。问题的一部分是模型从sql存储过程填充的表。因此,在编写MVC时,数据超出了MVC的范围。

这里的第101课是模型验证空字符串。