背景:無法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