【问题标题】:Partial View ignoring data set and not displaying部分视图忽略数据集而不显示
【发布时间】:2016-03-04 20:44:37
【问题描述】:

我正在用 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 将这些值传递给我的“搜索”控制器方法。 (值都使用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>
}

什么都不显示,我也没有收到任何错误。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-partialview


    【解决方案1】:

    在您的 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 返回 PartialView 时,您返回的是 html 类型,而不是 jsontype。

    只需将 dataType 更改为 "html" 或删除该行(这样 javascript 将尝试自行解释)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      相关资源
      最近更新 更多