我已经包含以下代码行,其中success函数中的结果包含[object Object]形式的必要数据(考虑结果具有[object object]形式的Name,Category和Description等属性])。
$.ajax({
url: rootUrl + 'Admin/EditRSS',
type: "GET",
data: { FeedId: FeedId },
dataType: 'json',
success: function (result) {
// do something here
},
error: function () { alert("error") }
});
现在我想在一个加载局部视图的jquery对话框中使用这个结果
$("#editFeedDialog").dialog({
title: "Edit Feed",
width: '60%'
});
<div id="editFeedDialog" style="display: none; background-color: aliceblue;" >
@Html.Partial("EditFeed",//pass result as model)
</div>
控制器
[HttpGet]
public ActionResult EditFeed(int FeedId)
{
using (DbContext dataContext = new DbContext())
{
var feedDetails = (from u in DataContext.FeedMaster
where u.FeedMasterId == FeedId
select u).FirstOrDefault();
FeedMaster r = new FeedMaster();
r.FeedMasterId = FeedId;
r.FeedName = feedDetails.FeedName;
r.FeedCategory = feedDetails.FeedCategory;
r.FeedDescription = feedDetails.FeedDescription;
return Json(r, JsonRequestBehavior.AllowGet);
}
}
我应该能够将它作为模型传递给我的局部视图,或者至少我应该可以在 我是ajax的新手。所以有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您无法将JavaScript数据传递到Razor方法。这两个在请求管道中完全不同的时间发生。也就是说,在服务器返回响应之前,Razor在服务器端运行,而在服务器返回响应之后,JavaScript在客户端运行。
如果要使用从AJAX调用返回的数据加载部分,请让AJAX端点返回部分而不是数据。然后,您不需要额外的步骤,只需将AJAX调用的HTML响应直接插入DOM即可。
答案 1 :(得分:0)
有两种方法可以实现:
由于您要返回JSON数据,因此以下代码应该是合适的。
<强> JAVASCRIPT:强>
$.ajax({
url: @url.action('EditFeed','YourController'),
type: "GET",
data: { FeedId: FeedId },
dataType: 'json',
success: function (result) {
$('#editFeedDialog').empty().html('<p>'+result.FeedName+'</p><p>'+result.FeedCategory+'</p><p>'+result.FeedDescription+'</p>');
},
error: function () { alert("error") }
});
<强> HTML:强>
<div id="editFeedDialog" style="background-color: aliceblue;"></div>