asp.net-mvc - 无法将 PartialView 返回到 jQuery.ajax 调用

标签 asp.net-mvc json jquery partial-views

背景:

我正在开发一个 ASP.NET MVC 应用程序,该应用程序的主页上有 3 个部分(基于 Razor 引擎)。第一部分有用户填写的搜索条件列表。第二部分应该根据传入的数据显示 ParameterParts 列表。第三部分应该根据传入的数据显示规范列表。我需要调用 Controller 中的方法来填充我的第二个和第三个部分 View 。

问题:

所有三个部分的父 View (index.cshtml) 的代码

<div class="prepend-top span-24 last" id="searchPage">
    <div class="span-24 last">
        @Html.Partial("_Search")
    </div>
    <div class="span-24 last" id="parameterResults">
        @Html.Partial("_ParameterParts")
    </div>
    <div class="span-24 last" id="searchSpecResults">
        @Html.Partial("_Specifications")
    </div>
</div>

第一部分代码 (_Search.cshtml):

 // Post the object to the server using jQuery
 $.ajax({
     url: '@Url.Action("ParameterParts")',
     type: 'POST',
     dataType: 'html',
     data: dataToPass,
     error: function (data) { alert('Something Went Wrong'); },
     contentType: 'application/json; charset=utf-8',
     success: function (data) {
         alert('Success P');
         $("parameterResults").html(data);
     }
 });

此代码使用 dataToPass 参数正确调用 ParameterParts 方法。

这是我用于 Controller 方法的代码:

[HttpPost]
public ActionResult ParameterParts(CriteriaViewModel vm)
{
    List<ParameterPart> parameterParts = new List<ParameterPart>();

    //Some logic to populate parameterParts using the passed in object

    return PartialView("_ParameterParts", parameterParts);
}

第二部分代码:

@model IEnumerable<SmartPlex.Web.SmartPlex.ODataService.ParameterPart>

<table>
    <tr>
        <th>
            Part Number
        </th>
        <th>
            Description
        </th>
    </tr>
    @if (Model != null)
    {
        foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.PartNumber)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Description)
                </td>

            </tr> 
         }                       
    }
</table>

我不包括第三部分,因为它与第二部分相同。如何使用上述方法更新我的部分内容?

最佳答案

 dataType: 'dataToPass',
 data: json,

dataType 是您期望从服务器返回的数据类型。如果您返回 html,则不应该是 json。

data是要发送到服务器的数据。

更新:

您缺少#,您的选择器不正确。如果你的 html 是这样的:

<div class="span-24 last" id="parameterResults">
  @Html.Partial("_ParameterParts")
</div>

你的代码应该是这样的:

 $("#parameterResults").html(data);

关于asp.net-mvc - 无法将 PartialView 返回到 jQuery.ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593429/

相关文章:

c# - 是否有一个变量可以查看网站是否已部署

jquery - 根据以前的下拉列表更新下拉列表

asp.net - 有人知道使用 ASP.NET MVC1 或 MVC2、NHibernate、Fluent NHibernate 和 CaSTLe 的可靠 Web 示例吗?

ios - RestKit - 多类型子数组映射

JavaScript/jQuery : Varying parameters on a custom function

javascript - 时间选择器验证?查询/Javascript

asp.net-mvc - 如何在 ASP.net MVC 3 View 中包含纯 HTML 或经典 ASP 文件的内容?

javascript - json 字符串和 django 模板的问题

json - 从azure逻辑应用程序中的JSON对象文件返回特定属性(文本)

javascript - 在 Chrome/Safari 中使用 History.pushState 复制历史条目