【问题标题】:MVC Ajax.error render Partial ViewMVC Ajax.error 渲染部分视图
【发布时间】:2016-09-07 15:59:16
【问题描述】:

在使用 ASP.NET MVC 的 Kendo UI Grid 时,我发现一些令人沮丧的行为,我似乎无法理解或找到任何信息。我有一个网格,它向具有一些服务器端验证的服务器发出kendoGrid.saveChanges() 请求。如果服务器端验证失败,则返回如下结果:

Response.StatusCode = HTTP_BAD_CLIENT_REQUEST; // const int 400
return PartialView("Error/BadRequest");

局部视图只有一些基本的 HTML 用于向用户显示错误信息,网格的数据源错误回调执行以下操作:

function errorCallback(e) {
    // Handles explicit Ajax and Kendo DataSource error callbacks
    var content = e.responseText || e.xhr.responseText;
    // Wrapper around a kendo.ui.Window to display content
    Core.Alert.raiseAlert(content);
}

当我在调试模式下运行我的项目,或将项目的发布版本发布到我的本地计算机时,e.xhr.responseText 值被正确填充,即它包含部分视图的 HTML 消息。但是,只要我将它移到生产服务器,e.xhr.responseText 就只包含值"Bad Request",这也是我当前使用的 HTTP 状态代码。我尝试过使用其他状态码,但结果相同(错误名称用作 responseText)。

我觉得这很奇怪的原因是我在另一个项目中为我们公司的内部应用程序做类似的事情,而且效果很好。它们在 Kendo 和 ASP.NET 的相同版本和工具上运行。

谁能指出我直接使用工具或文档、Kendo 或 AJAX,它解释了为什么响应文本没有使用我的部分视图结果或如何将我发送的部分视图结果映射到 xhr.responseText 属性?

编辑:通过尝试不同的错误代码,我发现某些状态代码如 405(不允许)导致返回 IIS 服务器错误 html。所以现在我真的很困惑,为什么在我指定返回值和要返回的视图时,一些状态码只是返回请求的名称,而另一些则返回该错误代码的模板化 HTML?

【问题讨论】:

    标签: c# ajax asp.net-mvc kendo-grid


    【解决方案1】:

    发现和解决方案的功劳归this post

    在进行了一些挖掘之后,我发现问题归结为 IIS 在我使用错误 HTTP 状态代码时覆盖了正在发送的内容(以及因此部分视图)。

    解决方案是在 web.config 中的system.webServer 中添加一个<httpErrors> 标签。我发现以下内容足以让我的部分观点传达给客户。

    <system.webServer>
        <httpErrors existingResponse="PassThrough" />
    </system.webServer>
    

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      相关资源
      最近更新 更多