部分视图未使用 MVC3 中的 Jquery 重新加载
Partial View is not reloading using Jquery in MVC3
我在 MVC3 中创建了一个应用程序,我想在单击按钮时重新加载局部视图,但局部视图没有更新。
ActionResult 方法
public ActionResult CommentForPost(int postId)
{
var PostComments = _commentsRepository.GetCommentsByPostID(postId).Select(u => new CommentsViewModel()
{
CommentUserFullName = u.CommentUserFullName,
CommenterEmailId = u.CommenterEmailId,
CommenterSite = u.CommenterSite,
}).ToList();
return PartialView("PostedComments",PostComments);
}
主视图内的部分视图
<div id="dvPostedComment">
@Html.Partial("PostedComments", Model.Post)
</div>
Jquery
var postId = $("#hdnPostId").val();
var d = "postId=" + postId;
$.ajax({
type: "POST",
url: "/Comments/CommentForPost",
data: d,
success: function (r) {
$('#dvPostedComment').html(data);
},
complete: function () {
alert('hello2');
},
error: function (req, status, error) {
alert('helll3');
}
});
它总是在错误部分。
任何人都可以帮助我。
您正在尝试在部分视图 div 中加载 "data",但 "data" 不存在。
正如您所提到的,ajax 调用的结果是 r。
所以尝试使用
success: function (r) {
$('#dvPostedComment').html(r);
},
如果您正在使用 $.get,请使用以下代码:
$.get(url,
{ "postId": PostId},
function (data) { $('#dvPostedComment').html(data);
});
请这样尝试。我创建了一个小示例,它与您想在代码中实现的完全相同。您可以通过两种方式执行此操作 - 使用 $.ajax() 或使用 $.load()。 $.load() 方法做你想做的事。
_InnerPartial.cshtml
@model int
@{
<h1>This is a partial view</h1>
<h3>Your passed value=@Model</h3>
}
控制器方法
[HttpPost]
public PartialViewResult CallPartial(int value)
{
return PartialView("_InnerPartial", value);
}
Index.cshtml
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div id="divPartial"></div>
<script>
$(document).ready(function () {
AsyncAjaxCallback();
//AsyncCallback();
});
function AsyncCallback() {
var ctrl = $("#divPartial");
var url = "/Example/CallPartial";
if (url && url.length > 0) {
ctrl.load(url, { value: 45 });
}
}
function AsyncAjaxCallback() {
$.ajax({
type:"POST",
url: "/Example/CallPartial",
data: { value: 78 },
success:function(result)
{
debugger;
$("#divPartial").html(result);
}
});
}
</script>
有关详细信息,请参阅此 link。
http://dotnet-concept.com/Article/2014/8/15/How-to-load-partial-from-jquery-in-MVC
希望对您有所帮助。
我在 MVC3 中创建了一个应用程序,我想在单击按钮时重新加载局部视图,但局部视图没有更新。
ActionResult 方法
public ActionResult CommentForPost(int postId)
{
var PostComments = _commentsRepository.GetCommentsByPostID(postId).Select(u => new CommentsViewModel()
{
CommentUserFullName = u.CommentUserFullName,
CommenterEmailId = u.CommenterEmailId,
CommenterSite = u.CommenterSite,
}).ToList();
return PartialView("PostedComments",PostComments);
}
主视图内的部分视图
<div id="dvPostedComment">
@Html.Partial("PostedComments", Model.Post)
</div>
Jquery
var postId = $("#hdnPostId").val();
var d = "postId=" + postId;
$.ajax({
type: "POST",
url: "/Comments/CommentForPost",
data: d,
success: function (r) {
$('#dvPostedComment').html(data);
},
complete: function () {
alert('hello2');
},
error: function (req, status, error) {
alert('helll3');
}
});
它总是在错误部分。
任何人都可以帮助我。
您正在尝试在部分视图 div 中加载 "data",但 "data" 不存在。 正如您所提到的,ajax 调用的结果是 r。
所以尝试使用
success: function (r) {
$('#dvPostedComment').html(r);
},
如果您正在使用 $.get,请使用以下代码:
$.get(url,
{ "postId": PostId},
function (data) { $('#dvPostedComment').html(data);
});
请这样尝试。我创建了一个小示例,它与您想在代码中实现的完全相同。您可以通过两种方式执行此操作 - 使用 $.ajax() 或使用 $.load()。 $.load() 方法做你想做的事。
_InnerPartial.cshtml
@model int
@{
<h1>This is a partial view</h1>
<h3>Your passed value=@Model</h3>
}
控制器方法
[HttpPost]
public PartialViewResult CallPartial(int value)
{
return PartialView("_InnerPartial", value);
}
Index.cshtml
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div id="divPartial"></div>
<script>
$(document).ready(function () {
AsyncAjaxCallback();
//AsyncCallback();
});
function AsyncCallback() {
var ctrl = $("#divPartial");
var url = "/Example/CallPartial";
if (url && url.length > 0) {
ctrl.load(url, { value: 45 });
}
}
function AsyncAjaxCallback() {
$.ajax({
type:"POST",
url: "/Example/CallPartial",
data: { value: 78 },
success:function(result)
{
debugger;
$("#divPartial").html(result);
}
});
}
</script>
有关详细信息,请参阅此 link。 http://dotnet-concept.com/Article/2014/8/15/How-to-load-partial-from-jquery-in-MVC
希望对您有所帮助。