背景:
我正在开发一个 ASP.NET MVC 应用程序,该应用程序的主页上有 3 个部分(基于 Razor 引擎)。第一部分有用户填写的搜索条件列表。第二部分应该根据传入的数据显示 ParameterParts 列表。第三部分应该根据传入的数据显示规范列表。我需要调用 Controller 中的方法来填充我的第二个和第三个部分 View 。
问题:
- 返回 PartialView 会导致 ajax 调用匹配错误条件。
- 返回 void 与成功条件匹配,但我没有任何内容可填充参数结果。
- 返回 json 与成功条件匹配,但我的部分 View 不会呈现任何内容。
- 如果我可以将我的部分 View 转换为字符串并将其作为 json ( http://www.tugberkugurlu.com/archive/working-with-jquery-ajax-api-on-asp-net-mvc-3-0-power-of-json-jquery-and-asp-net-mvc-partial-views ) 返回,那么事情似乎会起作用,但这需要我使用 Nuget 下载一个库,由于我们的公司防火墙,这在某种程度上不起作用.
所有三个部分的父 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/