在MVC3中显示从JSON到表的数据
我在MVC3项目的.aspx视图中有一个表。 我在MVC3中使用.aspx视图,而不是Razor引擎或.cshtml视图。 我的jquery中有一个subwrited函数,它从控制器中获取一个JSON对象,其中包含一些值在MVC3中显示从JSON到表的数据,json,asp.net-mvc-3,Json,Asp.net Mvc 3,我在MVC3项目的.aspx视图中有一个表。 我在MVC3中使用.aspx视图,而不是Razor引擎或.cshtml视图。 我的jquery中有一个subwrited函数,它从控制器中获取一个JSON对象,其中包含一些值 function GetUsers() { $.ajax({ url: ('/Home/GetUsers'), type: 'POST', contentType: 'application/json',
function GetUsers() {
$.ajax({
url: ('/Home/GetUsers'),
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(),
success: function (result) {
alert(result.length);
var partnersTable = $('#PartnersTable');
partnersTable.html();
},
error: function () { alert("error"); }
});
}
现在我看到了一张桌子
<div id = "topGrid">
<table id="PartnersTable" style="float: left; width: 49%">
<th style="width: 75%">Partner</th>
<th style="width:25%">Users</th>
</table>
搭档
使用者
这就是我获取JSON对象的方式。现在它只是虚拟数据,但稍后将从数据库中填充
public JsonResult GetUsers()
{
var model = new List<UsersModel>();
var item = new UsersModel();
for (int i = 1; i <= 10; i++)
{
item.Partner = "Partner" + Convert.ToString(i);
item.Count = i;
model.Add(item);
}
return Json(model, JsonRequestBehavior.AllowGet);
}
publicjsonresult GetUsers()
{
var模型=新列表();
var item=new UsersModel();
对于(inti=1;i我将考虑使用jQuery插件,类似于jqGrid(http://www.trirand.com/blog/)可以从JSON创建表
或者,您可以创建一个局部视图,并在控制器中呈现该视图,然后返回生成的HTML以在此页面上填充。允许表的强类型定义。不确定返回JSON是否是您在此处的最佳选择。使用JSON,您将需要一些方法将JSON对象转换为可放置在有很多这样做的策略,包括模板化和通过代码构建元素
在这种情况下,最好让控制器方法从局部视图发回HTML而不是JSON
更改:-
contentType: 'application/json'
var partnersTable = $('#PartnersTable');
partnersTable.html();
致:-
更改控制器方法以返回ActionResult而不是JsonResult
添加一个新的局部视图以呈现整个表
在标记中保留div#topGrid
更改:-
contentType: 'application/json'
var partnersTable = $('#PartnersTable');
partnersTable.html();
致:-
<>不同的方法,但更适合你的要求,我觉得。 < P>有2种方法你可以考虑。
让控制器操作直接返回包含表数据的部分视图,这样就不必进行javascript模板化
使用JSON并进行javascript模板化
让我们看看第一种方法:
public ActionResult GetUsers()
{
var model = new List<UsersModel>();
for (int i = 1; i <= 10; i++)
{
var item = new UsersModel();
item.Partner = "Partner" + Convert.ToString(i);
item.Count = i;
model.Add(item);
}
return PartialView(model);
}
现在让我们来看看第二种方法,它包含了控制器动作返回JSON和手动创建表的HTML模板:
public ActionResult GetUsers()
{
var model = new List<UsersModel>();
for (int i = 1; i <= 10; i++)
{
var item = new UsersModel();
item.Partner = "Partner" + Convert.ToString(i);
item.Count = i;
model.Add(item);
}
return Json(users, JsonRequestBehavior.AllowGet);
}
public ActionResult GetUsers()
{
var模型=新列表();
对于(int i=1;如果不使用插件,我不知道有没有可能??您从控制器检索的JSON对象的格式是什么?我不确定是否可以使用它,因为我使用的不是Razor引擎,而是.aspxviews@Monga,将其转换为WebForms语法并不重要。我已经更新了我的答案,但你应该提到这一点在你的问题中,你使用的是WebForms视图引擎。此外,你可以做一些努力,而不只是等待别人为你编写代码。再说一次:正如我所说,我很新。这是我第一次在.aspx页面上使用MVC,而不是通常的.cshtml页面。@Monga,如果你是新手,那么我邀请你阅读关于ASP.NET MVC.O的教程n StackOverflow您应该只询问有关您在代码中遇到的问题的具体问题。您应该首先尝试自己解决问题,然后寻求帮助。@DarinDimitrov:非常感谢您及时提供的帮助。在第一种方法中,除了一件事之外,我什么都懂。您正在使用return PartialView(模型);我尝试用我的局部视图的名称替换PartialView,但它不起作用。事实上,控制器没有解析我的局部视图的名称
<table id="PartnersTable" style="float: left; width: 49%" data-url="<%= Url.Action("GetUsers", "Home") %>">
<thead>
<tr>
<th style="width: 75%">Partner</th>
<th style="width:25%">Users</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
var table = $('#PartnersTable');
$.ajax({
url: table.data('url'),
type: 'GET',
cache: false,
context: table,
success: function (result) {
this.html(result);
},
error: function () { alert("error"); }
});
public ActionResult GetUsers()
{
var model = new List<UsersModel>();
for (int i = 1; i <= 10; i++)
{
var item = new UsersModel();
item.Partner = "Partner" + Convert.ToString(i);
item.Count = i;
model.Add(item);
}
return Json(users, JsonRequestBehavior.AllowGet);
}
var table = $('#PartnersTable');
$.ajax({
url: datble.data('url'),
type: 'GET',
cache: false,
context: table,
success: function (users) {
var tableBody = this.find('tbody');
tableBody.empty();
$.each(users, function(index, user) {
$('<tr/>', {
html: $('<td/>', {
html: user.Partner
}).after($('<td/>', {
html: user.Count
}))
}).appendTo(tableBody);
});
},
error: function () { alert("error"); }
});