在Ajax返回时.BeginForm与验证错误隐藏按钮.如何



我有一个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
}))
{
   ...
}

一种方法我可以它是OnSuccess,我将得到@Model,但这是一个正确的方式。如

 function OnSuccess() {
     if(@Model.Id != 0){ //where id is populated when the data is saved.
       $('#btnNextstep').show();
     }
 }  

一种方法是从控制器动作(500内部服务器错误)更改状态码。如果有一个验证错误,然后你可以在Ajax.BeginForm的onError回调中隐藏按钮隐藏功能。有关此方法的更多细节,请访问http://zahidadeel.blogspot.com/2011/07/server-side-validation-with-aspnet-mvc.html。如果你不这样做,那么你必须处理成功回调中的任何响应(无论是验证错误还是成功)。在这种情况下,你可以选择总是从控制器动作发送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}

最新更新