如何从控制器获取值以查看
How to get the values from controller to view
我准备了一个控制器列表我想传递列表值以在视图中查看我有动态table这是在j查询
中创建的
我的控制器代码是
public JsonResult GetTimeTable()
{
List<StudentViewModel> list = new List<StudentViewModel>();
list= studentServices.studentdata();
return this.Json(
new {list=list },JsonRequestBehavior.AllowGet);
}
我的查看代码是
function GetTimeTable() {
var URL = '@Url.Action("GetTimeTable", "StudentDetails")';
$.ajax({
url: URL,
contentType: "application/json; charset=utf-8",
type: "GET",
dataType: "json",
success: function (data) {
debugger
var details;
$("#dynamictable").append('<table id="table"></table>')
var table = $("#dynamictable").children();
table.append("<tr><th>Name</th><th>Age</th><th>Marks1</th><th>Marks2</th><th>Marks3</th></tr>");
var row = table.append("<tr><td>Name</td><td>Age</td><td>Marks1</td><td>Marks2</td><td>Marks3</td></tr>");
alert('Data is inserted Sucessfully');
},
error: function (data) {
alert('Data is not present ');
}
});
}
您可以像这样从成功函数中获取数据..
var 测试数据=data.list;
'data' 是一个列表类型,您必须遍历该列表才能显示 table 内容。
您没有使用 return 编辑的数据来构建 table。除非你需要 return 额外的数据,否则我建议你将你的方法简化为
public JsonResult GetTimeTable()
{
return Json(studentServices.studentdata(), JsonRequestBehavior.AllowGet);
}
在成功函数中,data
包含您需要在循环中访问的 collection(在附加 table header 之后)。请注意,这假设 StudentViewModel
包含属性 Name
、Age
、Mark1
等
$.each(data, function(index, item) {
var row = $('<tr></tr>');
row.append($('<td></td>').text(item.Name));
row.append($('<td></td>').text(item.Age));
row.append($('<td></td>').text(item.Mark1));
// ... other table columns
table.append(row);
});
编辑
根据评论,您的studentdata()
方法需要修改如下
public List<StudentViewModel> studentdata()
{
// StudentViewModel studentViewModel = new StudentViewModel();
List<StudentViewModel> list = new List<StudentViewModel>();
SqlParameter[] parameters=new SqlParameter[0];
DataSet dataset = DataHelper.ExecuteAdapter(CommandType.StoredProcedure,"sp_GetStudentData", parameters);
DataTable dataTable = dataset.Tables[0];
for (int i = 0; i < dataTable.Rows.Count; i++)
{
StudentViewModel studentViewModel = new StudentViewModel(); // add this
studentViewModel.Name = dataTable.Rows[i]["Name"].ToString();
studentViewModel.Age = Convert.ToInt16(dataTable.Rows[i]["Age"]);
studentViewModel.Marks1 = Convert.ToInt16(dataTable.Rows[i]["Marks1"]);
studentViewModel.Marks2 = Convert.ToInt16(dataTable.Rows[i]["Marks2"]);
studentViewModel.Marks3 = Convert.ToInt16(dataTable.Rows[i]["Marks3"]);
list.Add(studentViewModel);
}
return list;
}
当您以列表形式返回数据时,属性 的名称是自己列出的,因此代码将如下所示
success : function(result){
$.each(result.list,function(idx,item){
// now the item is each row from your data sent by the controller.
html.append('<tr><td>' + item.Marks + '</td></tr>';
}
}
我准备了一个控制器列表我想传递列表值以在视图中查看我有动态table这是在j查询
中创建的我的控制器代码是
public JsonResult GetTimeTable()
{
List<StudentViewModel> list = new List<StudentViewModel>();
list= studentServices.studentdata();
return this.Json(
new {list=list },JsonRequestBehavior.AllowGet);
}
我的查看代码是
function GetTimeTable() {
var URL = '@Url.Action("GetTimeTable", "StudentDetails")';
$.ajax({
url: URL,
contentType: "application/json; charset=utf-8",
type: "GET",
dataType: "json",
success: function (data) {
debugger
var details;
$("#dynamictable").append('<table id="table"></table>')
var table = $("#dynamictable").children();
table.append("<tr><th>Name</th><th>Age</th><th>Marks1</th><th>Marks2</th><th>Marks3</th></tr>");
var row = table.append("<tr><td>Name</td><td>Age</td><td>Marks1</td><td>Marks2</td><td>Marks3</td></tr>");
alert('Data is inserted Sucessfully');
},
error: function (data) {
alert('Data is not present ');
}
});
}
您可以像这样从成功函数中获取数据..
var 测试数据=data.list;
'data' 是一个列表类型,您必须遍历该列表才能显示 table 内容。
您没有使用 return 编辑的数据来构建 table。除非你需要 return 额外的数据,否则我建议你将你的方法简化为
public JsonResult GetTimeTable()
{
return Json(studentServices.studentdata(), JsonRequestBehavior.AllowGet);
}
在成功函数中,data
包含您需要在循环中访问的 collection(在附加 table header 之后)。请注意,这假设 StudentViewModel
包含属性 Name
、Age
、Mark1
等
$.each(data, function(index, item) {
var row = $('<tr></tr>');
row.append($('<td></td>').text(item.Name));
row.append($('<td></td>').text(item.Age));
row.append($('<td></td>').text(item.Mark1));
// ... other table columns
table.append(row);
});
编辑
根据评论,您的studentdata()
方法需要修改如下
public List<StudentViewModel> studentdata()
{
// StudentViewModel studentViewModel = new StudentViewModel();
List<StudentViewModel> list = new List<StudentViewModel>();
SqlParameter[] parameters=new SqlParameter[0];
DataSet dataset = DataHelper.ExecuteAdapter(CommandType.StoredProcedure,"sp_GetStudentData", parameters);
DataTable dataTable = dataset.Tables[0];
for (int i = 0; i < dataTable.Rows.Count; i++)
{
StudentViewModel studentViewModel = new StudentViewModel(); // add this
studentViewModel.Name = dataTable.Rows[i]["Name"].ToString();
studentViewModel.Age = Convert.ToInt16(dataTable.Rows[i]["Age"]);
studentViewModel.Marks1 = Convert.ToInt16(dataTable.Rows[i]["Marks1"]);
studentViewModel.Marks2 = Convert.ToInt16(dataTable.Rows[i]["Marks2"]);
studentViewModel.Marks3 = Convert.ToInt16(dataTable.Rows[i]["Marks3"]);
list.Add(studentViewModel);
}
return list;
}
当您以列表形式返回数据时,属性 的名称是自己列出的,因此代码将如下所示
success : function(result){
$.each(result.list,function(idx,item){
// now the item is each row from your data sent by the controller.
html.append('<tr><td>' + item.Marks + '</td></tr>';
}
}