我的页面中有一个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();
}
}
答案 0 :(得分: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}