Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 关闭不引人注目的验证运行时?_Asp.net Mvc_Asp.net Mvc 3_Unobtrusive Javascript - Fatal编程技术网

Asp.net mvc 关闭不引人注目的验证运行时?

Asp.net mvc 关闭不引人注目的验证运行时?,asp.net-mvc,asp.net-mvc-3,unobtrusive-javascript,Asp.net Mvc,Asp.net Mvc 3,Unobtrusive Javascript,我有我的MVC 3应用程序,带有不引人注目的验证。在其中一个视图中,我有两个按钮。“action1”上的第一个按钮提交表单,第二个按钮提交到“action2”。在第一种情况下,我必须验证表单,但在第二种情况下,我需要在没有验证的情况下发布帖子,这可能吗?目前模型在这两种情况下都是有效的。我已经有一段时间没有使用Asp.net MVC了,这就是您想要的吗 @if(false) { // Replace false with your model property <script src="@

我有我的MVC 3应用程序,带有不引人注目的验证。在其中一个视图中,我有两个按钮。“action1”上的第一个按钮提交表单,第二个按钮提交到“action2”。在第一种情况下,我必须验证表单,但在第二种情况下,我需要在没有验证的情况下发布帖子,这可能吗?目前模型在这两种情况下都是有效的。

我已经有一段时间没有使用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>
}
@if(false){//用模型属性替换false
}

您有两个选择:

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

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

选项2代码

控制器:

[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
    }
}
视图:


我找到了答案。要禁用对“action2”的验证,我必须在controller中执行下一个方法:

ModelState.Clear(); 
以及

Html.EnableClientValidation(false);
Html.EnableClientValidation(false);