【发布时间】:2015-12-28 12:48:33
【问题描述】:
我想在使用 ajax 命中调用 ActionResult 后调用部分视图,并将部分视图数据渲染到主视图中。但是当调用 ActionResult 时,它的调用完美但没有调用 Partial 视图并在 ajax 中返回错误消息。 Ajax方法如下:
function postComment() {
var comment = $("#addComment").val();
var pathname = window.location.pathname.split("/");
var title = pathname[pathname.length - 1];
alert(comment);
jQuery.ajax({
type: 'POST',
dataType: "html",
url: "/Blogger/PostComment",
data: JSON.stringify({ 'comment': comment, "title": title ,"type":"Blogs"}),
contentType: "application/json; charset=utf-8",
success: function (result) {
$("#divAnswerSchemeContainer1").html(result);
},
error: function (e) {
alert("error");
}
});
}
动作结果是:
public ActionResult PostComment(string comment, string title, string type) {
return PartialView("~/Views/Shared/_partialShowComments", db.SocialMediaComments.ToList());
}
而局部视图是:
@model IEnumerable<DataModel.SocialMediaComment>
<div id="divAnswerSchemeContainer1">
@foreach (var item in Model)
{
@item.Comment
@item.CreatedDate
@item.BlogeName
}
</div>
使用 ajax 调用的操作结果很好,但部分视图不能很好地命中并从 ajax 返回错误消息。
浏览器控制台显示错误信息:
"NetworkError: 500 Internal Server Error - http://localhost:6767/Blogger/PostComment"
【问题讨论】:
-
单步执行您的代码,查看错误发生的确切位置以及确切的错误是什么。
-
db在哪里定义?在 PostComment 操作中放置一个断点以查看实际错误。
-
另外,我认为你不需要这个 contentType: "application/json; charset=utf-8"
-
将数据类型更改为 json。由于您指定 html 数据发布但将其作为 JSON 发送,因此无法正确映射。
标签: asp.net ajax asp.net-mvc