gpt4 book ai didi

c# - 在 Ajax.BeginForm MVC 4 场景中发送异常消息

转载 作者:太空狗 更新时间:2023-10-29 20:04:49 25 4
gpt4 key购买 nike

我有一个包含 ajax 表单的局部 View 。该 View 只是添加和更新用户信息。

Controller 发送回与 ActionResult 相同的部分 View 。

我想做的是在交易不成功时显示一条错误消息。但它仍应发回部分 View ,只是这次带有一条消息。

这将如何实现?

代码:

ManageUsers.cshtml

<div id="details">
@{
Html.RenderPartial("AddModifyUserPartialView");
}
</div>

@{
Html.RenderPartial("ListUsersPartialView");
}

AddModifyUserPartialView.cshtml

@using (Ajax.BeginForm("AddModifyUser", "Account", FormMethod.Post, 
new AjaxOptions()
{
UpdateTargetId = "details",
OnFailure= "handleError",
OnSuccess="handleSuccess"
},
new { id = "useragentform",
enctype = "multipart/form-data" }))
{
//form fields here
<input type="submit" id="savebutton" name="savebutton" value="Add New User" />
}

同样在局部 View 中:

function handleError(ajaxContext) {

var response = ajaxContext.get_response();
var statusCode = response.get_statusCode();

alert(statusCode);
}

账户管理员

try
{
SecurityManager.AddUpdateUserAgent(ua);
}
catch (Exception ex)
{
//how do I send the message back along with the partial view???
}
return PartialView("AddModifyUserPartialView");

最佳答案

解决这个问题的两个部分,创建一个新的异常,我们将其称为 StatusException,并附上您的消息,并在捕获到正常异常时将其抛出:

try
{
SecurityManager.AddUpdateUserAgent(ua);
}
catch (Exception ex)
{
throw new StatusException("Your error message here")
}
return PartialView("AddModifyUserPartialView");

覆盖 Controller::OnException 并通过将其设置为 handled 来处理异常,将错误代码设置为 500,将 HttpContext.Response.StatusDescription 设置为您的 StatusException 消息。例如:

    protected override void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception == null) return;

Type exceptionType = filterContext.Exception.GetType();

if (exceptionType == typeof(StatusException))
{

filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.ContentEncoding = Encoding.UTF8;
filterContext.HttpContext.Response.HeaderEncoding = Encoding.UTF8;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
filterContext.HttpContext.Response.StatusCode = 500;
filterContext.HttpContext.Response.StatusDescription = filterContext.Exception.Message;
}
}

然后,在 Ajax.BeginForm 的 OnFailure 处理程序中,显示错误参数:

function handleError(data){
//display data.errorThrown, data.statusCode, etc...
}

通过在 OnException 覆盖中将错误代码设置为 500,AjaxForm 将检测到错误并跳转到您的处理程序。我们还在重写中设置了 StatusDescription,因此该消息将在 handleError 回调中可用。

关于c# - 在 Ajax.BeginForm MVC 4 场景中发送异常消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18763993/

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