背景:无法PartialView返回到jQuery.ajax呼叫
我上有3个谐音的ASP.NET MVC应用程序的工作(基于剃刀引擎)的主页上。第一个部分有一个用户填充的搜索条件列表。第二部分应该根据传入的数据显示ParameterParts的列表。第三部分应该根据传入的数据显示规格列表。我需要调用Controller中的方法来填充我的第二和第三部分视图。
问题:
- 返回一个PartialView导致Ajax调用,以匹配错误条件。
- 返回void匹配成功条件,但我没有什么可以填充parameterResults。
- 返回json匹配成功条件,但然后我的部分视图不呈现任何东西。
- 看来,事情会工作,如果我可以在我的partialview转换成字符串,并将其返回为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库,这在某种程度上不会因为我们的企业防火墙工作。
代码用于所有三个泛音
<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>
代码的第一部分的父视图(index.cshtml)(_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方法。
这里是我使用用于控制器方法的代码:
[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>
我不包括第三部分,因为它是与第二个相同。如何使用上述方法更新我的偏好?
感谢BZ的信息。我修改了我的ajax调用来期望HTML返回,现在如果我提醒正在返回的数据,我会得到正确的html。不过,我仍然无法呈现$(“parameterResults”)div内的html。看来$(“parameterResults”).html(data)没有做任何事情。 – Yasir 2012-03-06 23:51:20
@B Z,我已经添加了主视图和第二部分代码,如果有帮助的话。 – Yasir 2012-03-07 00:38:45
是啊...选择器是错的。不能相信我无法自己发现。万分感谢。 – Yasir 2012-03-07 00:53:23