所以我有一个5星评级系统,每个星都调用此功能:
function Test(ideaId, rating){
//alert(ideaId + " : " + rating);
$.ajax({
url: '@Url.Action("RateIdea", "Ideas")',
dataType: "json",
type: "Get",
data: { "ideaId": ideaId, "ratingValue": rating, "challengeId": @Model.pkiChallengeId }
}).done(function (response) {
//alert('test');
$("#divDetailsPartial").html(response);
});
}
ActionResult
被称为:
public ActionResult RateIdea(int ideaId, int ratingValue, int challengeId)
{
string loggedInUserId = User.Identity.GetUserId();
int id = clsIdeas.SaveRating(ideaId, ratingValue, loggedInUserId);
ChallengeIdeasViewModel CIVM = new ChallengeIdeasViewModel();
IEnumerable<Ideas> ideasList;
CIVM.ideasList = clsIdeas.GetChallengeIdeas(challengeId, loggedInUserId);
CIVM.ChallengeStatus = clsIdeas.GetChallengeStatus(challengeId);
return PartialView("Details", CIVM);
//return Json(new { status = "success" }, JsonRequestBehavior.AllowGet);
}
在我的View
中:
<div class="widget-body no-padding">
<div id="divDetailsPartial">
@Html.Action("Details", "Ideas", new { id = Model.pkiChallengeId })
</div>
</div>
为说明起见,当页面加载并显示带有数据表的局部视图时,将调用Action。我的评分系统有效(数据库已更新),我只想刷新此相同的局部视图,而不必刷新整个页面。
如果我返回JSON结果并仅显示警报,则它可以工作,但是当我想用部分视图替换div时却不能。
我想念什么?
答案 0 :(得分:2)
因为您要指定ajax调用在从操作方法返回PartialView时期望从服务器返回json结果,而该方法将从服务器以html字符串形式返回。
因此更改以下行:
dataType: "json"
删除上面的行或对其进行调整,以告诉它从服务器中退回html。
以下设置将告诉它期望返回html结果:
dataType : "html"
的信息