gpt4 book ai didi

javascript - Ajax.BeginForm() 在错误时设置 javascript 变量

转载 作者:行者123 更新时间:2023-11-28 20:01:51 25 4
gpt4 key购买 nike

我的ajax表单如下:

@using (Ajax.BeginForm("AddMyModel", "MyModel",
new AjaxOptions
{
HttpMethod = "POST",
OnBegin = "begin",
OnComplete = "end",
UpdateTargetId = "addcontent",
InsertionMode = InsertionMode.InsertAfter
},
new
{
id = "validationForm",
@class = "edit_form",
style = "width: 400px;"
}))
{
<div id="addcontent">
@Html.Partial("_MyPartialView", Model)
</div>
}

当我提交表单时,它会转到 MyModel Controller 中的 AddMyModel 函数。

我想要什么:如果在函数 AddMyModel 中设置一个 javascript 变量时出现错误,我可以在 javascript 函数结束后检查该变量。

MyJavascriptFile.js:

var success;

function end()
{
if(success==false)
{
//I know there was error
}
}

这可能吗?听起来合理还是容易出错?

最佳答案

您应该在 AjaxOptions 集合中设置 OnFailure 选项:

@using (Ajax.BeginForm("AddMyModel", "MyModel",
new AjaxOptions
{
HttpMethod = "POST",
OnBegin = "begin",
OnComplete = "end",
OnFailure = "handleError(error)",
UpdateTargetId = "addcontent",
InsertionMode = InsertionMode.InsertAfter
},

然后:

function handleError(error)
{
//error handling logic
}

以这种方式处理此类错误是一种非常常见的做法。

如果您希望能够自己决定某个操作是否成功,您可以编写以下内容:

[HttpPost]
public ActionResult Process(MyViewModel model)
{
if (!ModelState.IsValid) // for example
{
return Json(new { success = false });
}
return Json(new { success = true });
}

然后修改您的 OnSuccess 函数:

OnComplete = "end(result)"

然后将错误检查作为 success 函数的一部分进行处理:

function end(result) {
if (result.success) {
// executed when successful
} else {
// executed when you decided it is not successful
}
}

关于javascript - Ajax.BeginForm() 在错误时设置 javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21535086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com