2011-08-04 50 views
0

我有我的頁面Ajax.BeginForm。 當返回一個驗證錯誤,我想隱藏的按鈕。 例如:在Ajax.BeginForm與驗證錯誤返回隱藏button.How?

我想。如果存在重複名稱控制器返回驗證錯誤儲存姓名。 在錯誤的回報,我想隱藏的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(); 
    } 
} 

回答

2

一種方法是從控制器操作(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}