我正在开发一个MVC应用程序,我有一个方案来刷新页面的一部分基本上是ajax ......
<div id="ajax" style="width:10%;float:left">
@foreach (var item in @Model.SModel.Where(x=>x.StudentId==13))
{
<li>@Html.DisplayFor(score => item.StudentName)</li>
}
这是我需要在点击按钮时刷新的div(页面的一部分)。我有2个js文件,data.js
和render.js
...
data.js 包含以下模板:
makeAJAXCall =
function (url, params, callback) {
$.ajax({
type: "get",
timeout: 180000,
cache: false,
url: url,
dataType: "json",
data: params,
contentType: "application/json; charset=utf-8",
success: function (result) {
if (callback) {
callback(result);
}
},
error: function (req, status, error) {
}
return null;
}
});
};
getGrid = function () {
makeAJAXCall(urlCollection["getGridInfo"], "", function (result) {
renderer.renderGridInfo('ajax', result);
});
};
和 render.js 文件如下:
renderGridInfo = function (area, data) {
$("#" + area).text(data);
};
return {
renderGridInfo: renderGridInfo
};
在按钮上的加载页面中单击功能为:
Service.addURL('getGridInfo', '@Html.Raw(@Url.Action("getGridInfo", "AjaxController"))');
Service.getGrid();
在 ajax控制器中,代码为:
public JsonResult getGridInfo()
{
return Json(model, JsonRequestBehavior.AllowGet);
}
但我遇到的问题是,控制器返回JsonResult,但'div'
接受模型,因此输出为[object] [object] button click
问题:有没有办法从控制器返回的Jsondata中刷新此'div'
?
我必须遵循这种类型的设计而不使用AjaxForm。
答案 0 :(得分:2)
看看会发生什么:
1)你返回 Json :return Json(model, JsonRequestBehavior.AllowGet);
2)将返回的Json对象放入div的值:$("#" + area).text(data);
这就是为什么你最终在div中使用json的表示
您需要按如下方式进行更改:
1)假设您将该div的html放在名为 NewHtml 的模型字段中
2)从返回的json的属性中获取html:var returnedHtml = data.NewHtml;
3)使用html()
方法代替text()
:$("#" + area).html(returnedHtml);