2012-04-05 37 views
1

我期望在提交之前启用“保存”表单数据。如何在调用MVC3控制器中的UpdateModel之前禁用验证

我希望用户能够保存表单进度,即使表单处于无效状态,然后再回来。

现在,我唯一的问题是,我想能够使用UpdateModel方法来更新我的模型。但是,由于表单可能无效或部分完成,这会导致错误。

有没有办法注释下面的方法,以便在SAVE实例中忽略验证?

[HttpPost] 
public ActionResult Save(Model values) 
{ 
var model = new Model(); 
UpdateModel(model); 
} 

我要救不必写一个1-1映射元素被保存 - 这是我的后备选项,但不是很维护。

回答

1

TryUpdateModel(model)一试,应该适合您的需求。

这不会抛出异常,和它将更新模型,然后返回false如果有验证错误。

如果您关心错误,请在错误实例中检查ModelState

因此,你可以把它当作所以一直保存更改:

[HttpPost] 
public ActionResult Save(Model values) 
{ 
var model = new Model(); 
TryUpdateModel(model); 

model.saveChanges(); 

} 
+0

谢谢!最初我以为TryUpdateModel(模型)只是返回false而什么都没做。然而,它仍然会更新模型。那是我错过的部分。从本质上讲,我想抑制任何验证错误,现在我可以通过忽略TryUpdateModel的返回值来实现这一点。完善! – dazbradbury 2012-04-05 19:53:22

+0

请注意,如果您启用了客户端验证,那么您将无法提交表单。但是,您可以在提交“保存”按钮之前禁用验证。 – 2012-04-06 00:12:03

+0

@MystereMan - 这就是我已经实现的。我只需通过ajax进行表单提交,并根据响应提供一些视觉反馈。这确保忽略客户端验证,并且可以非常简单地保存表单。在实际使用任何数据之前进行验证,并且可以针对任何注射尝试进行测试。 – dazbradbury 2012-04-07 15:04:13

相关问题