我有一个在 Ajax 调用后正在重新加载的部分。以下代码有效:
public PartialViewResult AddPreferredPosition(string playerID, int positionID)
{
playerService.AddPlayerPreferredPosition(Guid.Parse(playerID), positionID);
PreferredPositionsModel model = new PreferredPositionsModel();
model.PreferredPositions = playerService.GetPlayerPreferredPositions(Guid.Parse(playerID));
model.Positions = playerService.GetPositions();
return PartialView("~/Areas/Admin/Views/Player/Partials/PreferredPositions.cshtml", model);
}
连同:
var params = {};
params.playerID = $('#PlayerID').val();
params.positionID = $("select[name='ddlPositionID'] option:selected").val();
$.ajax({
type: 'POST',
url: '/Admin/Player/AddPreferredPosition',
data: params,
success: function (data) {
$('#PreferredPositions').html(data);
}
});
我想稍微改变它以进一步管理我的错误处理,如下所示:
public ActionResult AddPreferredPosition(string playerID, int positionID)
{
try
{
playerService.AddPlayerPreferredPosition(Guid.Parse(playerID), positionID);
PreferredPositionsModel model = new PreferredPositionsModel();
model.PreferredPositions = playerService.GetPlayerPreferredPositions(Guid.Parse(playerID));
model.Positions = playerService.GetPositions();
return Json(new
{
Success = true,
HTML = PartialView("~/Areas/Admin/Views/Player/Partials/PreferredPositions.cshtml", model)
}, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new
{
Success = false,
ErrorMessage = ex.Message,
InnerException = (ex.InnerException != null ? ex.InnerException.Message : ""),
ex.StackTrace
});
}
}
与:
$.ajax({
type: 'POST',
url: '/Admin/Player/AddPreferredPosition',
data: params,
success: function (data) {
if (data.Success) {
$('#PreferredPositions').html(data.HTML);
} else {
alert(data.ErrorMessage);
console.log(data.StackTrace);
}
}
});
但是,当我这样做时,data.HTML
不是已编译的部分 View 的 HTML,就像在工作示例中一样。
我做错了什么?
最佳答案
更正本节中的代码。
$.ajax({
type: 'POST',
url: '/Admin/Player/AddPreferredPosition',
data: params,
success: function (data) {
if (data.Success) {
$('#PreferredPositions').html(data.HTML);
} else {
alert(data.ErrorMessage);
console.log(data.StackTrace);
}
}
});
当您返回 JSON
时,您必须从 Json 解析该数据。
否则您将无法直接访问该数据
data.HTML
希望这有帮助。
关于jquery - 在 JSON 响应中返回 'PartialView' 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48186568/