Javascript 返回带有验证错误的Ajax.BeginForm时隐藏按钮。如何隐藏?

Javascript 返回带有验证错误的Ajax.BeginForm时隐藏按钮。如何隐藏?,javascript,jquery,asp.net-mvc,razor,Javascript,Jquery,Asp.net Mvc,Razor,我的页面中有一个Ajax.BeginForm。 当返回验证错误时,我想隐藏一个按钮。 例如: 我想保存一个名称。如果存在重复的名称,控制器将返回验证错误。 返回错误时,我想隐藏nextStep按钮 你知道怎么做吗 <script type="text/javascript"> function OnSuccess() { alert("Success"); $('#btnNextstep').show(); } </script> @us

我的页面中有一个Ajax.BeginForm。 当返回验证错误时,我想隐藏一个按钮。 例如:

我想保存一个名称。如果存在重复的名称,控制器将返回验证错误。 返回错误时,我想隐藏nextStep按钮

你知道怎么做吗

<script type="text/javascript">
 function OnSuccess() {
     alert("Success");
     $('#btnNextstep').show();
 }  
 </script> 
 @using (Ajax.BeginForm("Save", "PropertyBuilder", new AjaxOptions()
{
    UpdateTargetId = "divSave",
    OnSuccess = "OnSuccess",       
    InsertionMode = InsertionMode.Replace
}))
{
   ...
}

一种方法是从控制器操作更改状态代码(500内部服务器错误)。如果存在验证错误,则可以在Ajax.BeginForm的onError回调中隐藏按钮隐藏功能。有关此方法的更多详细信息,请访问。如果您不这样做,那么您必须在成功回调中处理任何响应(无论是验证错误还是成功)。在这种情况下,您可以选择始终从控制器发送json,如

public JsonResult test()
{
    if(ModelState.IsValid)
    {
        return json(new{success=true, OtherData = "xyz maybe some html"});
    }
   return Json(new {success=false, OtherData = "some error occured"});
}
然后在onSuccess回调中,您必须检查

if(data.Success){
//do something
}else{//hide button}
if(data.Success){
//do something
}else{//hide button}