日期:2014-05-17  浏览次数:20503 次

MVC3 如何使用两种validation
刚学mvc,对jquery什么也不是很熟。现在我在cshtml中实现了一个form,有两个提交按钮:保存为草稿 、 确认提交。

确认提交的情况下要对所有字段进行验证,比如不能为空,这个已用validation实现:@Html.ValidationMessageFor(model => model.ID)

保存为草稿的情况下不进行验证而希望直接提交到action,请问怎么实现啊?
请讲得稍微详细点,包括原理,先谢过~

------解决方案--------------------

页面
<script>
function  saveTemp()
{
   $.get('@Url.Action("SaveTemp")',$('#form1').serialize(),function(data){});
}
</script>
<form id="form1"......................>
<input type="button" value="存草稿"  onclick="saveTemp()"/>
</form>


下面是控制器代码
public class XXXXController
{
 public ActionResult SaveTemp()
{
 //存草稿
 TryUpdateModel(......);
}
}
------解决方案--------------------
貌似是submit会进行validation但是用js提交就不会,不过要用两种validation不知道怎么做了
------解决方案--------------------
楼主你这个问题有点意思,我说下,首先mvc3的验证分两块:前端脚本验证和后端的模型验证。

前端验证默认是开启的,你提交的话,比如某个字段不能为空,提交会被阻止。绕过前端验证的方法是:把input等元素的属性中的data-val="true"改为data-val="false"。需要验证的时候再设置回来。

后端验证你的代码中肯定有
if (ModelState.IsValid)
{
...
}
return View(model);
的结构,这就是后端控制验证的代码。如果后端验证失败,失败的状态就保持在ModelState里了。你可以通过额外参数来表示是草稿或确认提交,然后决定是否管理ModelState。