MVC Ajax.渲染局部视图错误
本文关键字:视图 错误 染局 Ajax MVC | 更新日期: 2023-09-27 18:06:15
在使用Kendo UI Grid for ASP时。. NET MVC我发现一些令人沮丧的行为,我似乎无法理解或找到任何信息。我有一个网格,使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的相同版本和工具上。
有没有人可以在工具或文档,剑道或AJAX的直接指向我,这解释了为什么响应文本不使用我的部分视图结果,或者我如何将我发送到xhr.responseText
属性的部分视图结果映射?
这些发现和解决方案都归于本文。
在做了一些挖掘之后,我发现问题归结为IIS覆盖的内容(因此部分视图)被发送,当我使用错误的HTTP状态码。
解决方案是在web.config中的system.webServer
中添加<httpErrors>
标签。我发现以下内容足以让我的部分视图到达客户端。
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>