关闭不显眼的验证运行时?

时间:2012-07-09 15:29:16

标签: asp.net-mvc asp.net-mvc-3 unobtrusive-javascript

我的MVC 3应用程序具有不引人注目的验证。在其中一个视图<form action=''>..</form>中,我有两个按钮。第一个按钮在'action1'上提交表单,第二个按钮提交到'action2'。在第一种情况下,我必须验证表单,但在第二种情况下,我需要发布,没有验证,是否可能?目前模型在两种情况下均有效。

3 个答案:

答案 0 :(得分:2)

我找到了答案。要禁用'action2'的验证,我必须在控制器中执行下一个方法:

ModelState.Clear(); 

并在视野中

Html.EnableClientValidation(false);

答案 1 :(得分:1)

自从我完成Asp.net MVC以来已经有一段时间了,这就是你要找的吗?

@if(false) { // Replace false with your model property
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
}

答案 2 :(得分:1)

您有几个选择:

1)不要在Controller动作中使用ModelState.IsValid。在action1上,运行验证表单的javascript方法。如果表格有效,则提交表格。在action2上,由于您没有使用ModelState.IsValid,因此提交表单并运行控制器操作。

2)在Controller动作中使用ModelState.IsValid。将两个提交按钮命名为相同的名称(即“SubmitButton”)。将“action1”和“action2”指定为相应提交按钮的值。将SubmitButton作为字符串参数传递给Controller操作。如果SubmitButton ='action1',则查询ModelState.IsValid。否则,不要查询ModelState.IsValid。

Option2代码

控制器:

[HttpPost]
public ActionResult SomeAction(ModelObject theModel, string SubmitButton)
{
    if (SubmitButton== 'Action1')
    {
        if(ModelState.IsValid)
        {
            //do some work
        } 
        else
        {
            return(View(theModel));
        } 

    }
    else //action2 has ben used to submit, so don't vaildate
    {
       //do some work
    }
}

查看:

<input type="submit" id="action1" name="SubmitButton" value="Action1"/> 
<input type="submit" id="action2" name="SubmitButton" value="Action2"/>