部分视图忽略数据集且不显示
Partial View ignoring data set and not displaying
我正在 ASP.NET MVC 中开发应用程序。我正在处理一个页面,该页面接受一些用户输入的值,然后使用存储过程从中获取数据集。我的偏好是数据在显示的页面上输入,因此我使用 AJAX 和部分视图来完成此操作。我的代码与一组虚拟的简单数据(简单字符串)完美配合,但现在我使用的是更高级的数据集(Ienumerable),它不再显示部分视图。
这是我的部分观点(出于长度考虑,隐藏了输入数据的文本框):
<!--SEARCH RESULTS PARTIAL FILLED BELOW-->
<div id="search-results">
</div>
<!---->
<script>
function getSearchResults() {
var SqlViewModel = {
//assign textboxes to values to pass to controller (hidden)
}
$.ajax({
type: "POST",
data: JSON.stringify(SqlViewModel),
dataType: "json",
contentType: "application/json",
url: "/Sql/Search/",
success: function(result) {
$('#search-results').html(result);
}
}); }
</script>
我从文本框中获取数据,然后使用我的 ajax 将这些值传递到我的 "Search" 控制器方法。 (值都使用 SqlVieWModel 正确传递)
控制器方法:
[HttpPost]
public ActionResult Search(SqlViewModel sT)
{
//code for stored procedure
var sql = //get stored procedure and parameters
SqlPartialViewModel obj = new SqlPartialViewModel();
obj.SqlData = sql; //obj.SqlData is of type IEnumerable<Get_Result>
return PartialView("_SearchResultsPartial", obj);
SqlPartialViewModel 定义:
public class SqlPartialViewModel
{
public IEnumerable<Get_Result> SqlData { get; set; }
}
最后,我尝试简单地让这些数据显示在我的局部视图中 (_SearchResultssPartial.cshtml):
@model SqlPartialViewModel
<table>
<tr>
<th>//Display stuff</th>
</tr>
@foreach(var result in Model.SqlData)
{
<tr>
<td>//Display stuff</td>
</tr>
}
没有任何显示,我也没有收到任何错误。
在您的 Ajax 调用中,您期望来自服务器的 json
结果:
$.ajax({
type: "POST",
data: JSON.stringify(SqlViewModel),
dataType: "json", <---- HERE
contentType: "application/json",
url: "/Sql/Search/",
success: function(result) {
$('#search-results').html(result);
}
});
但是当你从 ActionResult
中 return 一个 PartialView
时,你 returning html
类型,而不是 json
类型.
只需将 dataType
更改为 "html"
或删除该行(这样 javascript 将尝试自行解释)。
我正在 ASP.NET MVC 中开发应用程序。我正在处理一个页面,该页面接受一些用户输入的值,然后使用存储过程从中获取数据集。我的偏好是数据在显示的页面上输入,因此我使用 AJAX 和部分视图来完成此操作。我的代码与一组虚拟的简单数据(简单字符串)完美配合,但现在我使用的是更高级的数据集(Ienumerable),它不再显示部分视图。
这是我的部分观点(出于长度考虑,隐藏了输入数据的文本框):
<!--SEARCH RESULTS PARTIAL FILLED BELOW-->
<div id="search-results">
</div>
<!---->
<script>
function getSearchResults() {
var SqlViewModel = {
//assign textboxes to values to pass to controller (hidden)
}
$.ajax({
type: "POST",
data: JSON.stringify(SqlViewModel),
dataType: "json",
contentType: "application/json",
url: "/Sql/Search/",
success: function(result) {
$('#search-results').html(result);
}
}); }
</script>
我从文本框中获取数据,然后使用我的 ajax 将这些值传递到我的 "Search" 控制器方法。 (值都使用 SqlVieWModel 正确传递)
控制器方法:
[HttpPost]
public ActionResult Search(SqlViewModel sT)
{
//code for stored procedure
var sql = //get stored procedure and parameters
SqlPartialViewModel obj = new SqlPartialViewModel();
obj.SqlData = sql; //obj.SqlData is of type IEnumerable<Get_Result>
return PartialView("_SearchResultsPartial", obj);
SqlPartialViewModel 定义:
public class SqlPartialViewModel
{
public IEnumerable<Get_Result> SqlData { get; set; }
}
最后,我尝试简单地让这些数据显示在我的局部视图中 (_SearchResultssPartial.cshtml):
@model SqlPartialViewModel
<table>
<tr>
<th>//Display stuff</th>
</tr>
@foreach(var result in Model.SqlData)
{
<tr>
<td>//Display stuff</td>
</tr>
}
没有任何显示,我也没有收到任何错误。
在您的 Ajax 调用中,您期望来自服务器的 json
结果:
$.ajax({
type: "POST",
data: JSON.stringify(SqlViewModel),
dataType: "json", <---- HERE
contentType: "application/json",
url: "/Sql/Search/",
success: function(result) {
$('#search-results').html(result);
}
});
但是当你从 ActionResult
中 return 一个 PartialView
时,你 returning html
类型,而不是 json
类型.
只需将 dataType
更改为 "html"
或删除该行(这样 javascript 将尝试自行解释)。