【发布时间】:2017-06-16 08:07:32
【问题描述】:
按照这个article,我正在尝试通过Ajax 加载Partial View。但它没有加载partial view。
注意事项:
- 我正在使用带有最新更新的 VS2015,默认安装/配置 Jquery,Visual Studio 的 MVC Core Web 应用项目模板附带。
- Google Chrome 的开发者工具没有显示错误。而且,浏览器的view source依然显示
<div id="UpdateTabData"></div>tag empty - 我通过将
alert('Test')放置在 Ajax 调用中的 click 事件中并在控制器操作方法中使用breakpoint进行了测试,Ajax 确实在调用 TestAction 方法并且该方法确实返回return PartialView("PartialView", myViemodel);而没有操作方法中的任何错误。 - 但最后的 Ajax 从它的错误函数返回我的自定义错误消息
控制器:
[HttpGet]
public IActionResult TestAction(string calledFrom)
{
... some code here with a view model myViemodel
return PartialView("myPartialViewName", myViemodel);
}
查看:
@model myProj.Models.myTestViewModel
...some html here...
<div id="UpdateTabData"></div>
... more html here
...
Ajax 代码在视图末尾:
$(document).ready(function () {
$('#myTabstripID li').click(function () {
var li_id = $(this).attr("id");
$.ajax({
url: '@Url.Action("TestAction", "myControllerName")',
data: { calledFrom: li_id},
contentType: 'application/json',
dataType: 'html'
type: 'GET',
cache: false,
success: function (data) {
$('#UpdateTabData').html(data);
},
error: function (data) {
alert('Error occurred');
}
});
});
});
【问题讨论】:
-
打开您的浏览器开发工具 -> 网络选项卡并查看您的 ajax 调用的响应。 200可以吗?如果没有,请检查响应并查看您得到了什么。可能是你的服务器代码崩溃了
-
@Shyju 是的,
dev tools ->network->Headers标签显示status code: 200 OK -
开发工具中的预览窗格显示什么?
-
@Shyju 通过使用您的评论,我能够通过在控制器的
return PartialView("myPartialViewName", myViemodel);语句中添加.cshtml扩展名来解决问题。对不起,我没有意识到status code: 200 OK实际上是在我在响应部分中找到未找到视图文件的消息之后(我的错)。我只是随便添加了.cshtml扩展名,并没有检查它是否确实解决了这个问题。为了其他用户的利益,如果您将评论转换为answer,我会将其标记为答案。
标签: jquery ajax asp.net-core asp.net-ajax asp.net-mvc-partialview