gpt4 book ai didi

asp.net-mvc - JQuery AJAX HandleErrorAttribute 部分 View

转载 作者:行者123 更新时间:2023-12-01 01:48:01 28 4
gpt4 key购买 nike

我有一个向 MVC Controller 提交表单的函数,如下 -

function submitForm() {
$.ajax
({
type: 'POST',
url: '/Users/Index',
data: $('#searchForm').serialize(),
beforeSend: function() {
$('.usersearchresult').fadeOut('fast', function () { $('.loadinggif').show(); });
},
success: function (response) {
$('.loadinggif').hide();
$('.usersearchresult').hide().html(response).fadeIn('normal');
},
error: function (response) {
alert(response);
$('.loadinggif').hide();
$('.usersearchresult').hide().html(response).fadeIn('normal');
}
});

return false;
}

我想要一个中央位置来捕获错误,因此我扩展了 HandleErrorAttribute -

public class ClientExceptionAttribute : HandleErrorAttribute
{
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

public override void OnException(ExceptionContext context)
{
Log.Error(context.Exception);

context.ExceptionHandled = true;

// Verify if AJAX request
if (context.HttpContext.Request.IsAjaxRequest())
{
// Use partial view in case of AJAX request
var result = new PartialViewResult();
result.ViewName = "~/views/shared/error.ascx";
context.Result = result;
}
}
}

错误 View 非常简单 -

@model String

@{
Layout = null;
}


<div class="exception">
<img src="../Content/Graphics/warning.png" />
<br />
<div class="message">@(String.IsNullOrEmpty(Model) ? "User Entry Api is currently unavailable" : Model) </div>
</div>

问题是 AJAX 出错时永远不会渲染部分 View (error.cshtml) - 它只会给我一个空白屏幕。

所以我有两个问题 -

  1. 如何让 AJAX 渲染部分错误 View
  2. 如何将模型传递给 ClientExceptionAttribute 中的分部 View

谢谢!

最佳答案

result.ViewName = "~/views/shared/error.ascx"; 应为 result.ViewName = "Error";

如果有人知道第二个问题的答案,我将不胜感激。

关于asp.net-mvc - JQuery AJAX HandleErrorAttribute 部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195724/

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