[英]PartialViewResult action gives error when ran from jquery function but not from @Render.Action
我有一個動作,當我在開發過程中進行工作時,被@ Html.Render動作調用,呈現部分視圖並且工作正常。
該局部視圖正在渲染一個表,該表內部每個TR都有另一個@ Html.RenderAction。 像這樣:
<div id="fooDiv">
@{Html.RenderAction("ProjectData", "Functional", new { categoryId = Model.SelectedCategoryId});}
</div>
呈現了其他幾個Partials,其中之一是:
<div id="FuncTableWrapper">
@{Html.RenderAction("FuncTable", Model.Id);}
</div>
呈現:
<table id="funcTable">
<tr>
<th></th>
@foreach (var item in Model.Categories)
{
<th class="thFuncLangName">@item.Name</th>
}
</tr>
@foreach (var funcFeature in Model.FuncFeatures)
{
<tr>
<td class="tdfuncFeatureName" colspan="@(Model.Categories.Count() + 1)">@funcFeature.Name</td>
</tr>
<tr class="trAddFuncContent hideThis">
<td colspan="@(Model.Languages.Count() + 1)">
@{Html.RenderAction("AddFuncContent", new { funcFeatureId = funcFeature.Id });}
</td>
</tr>
</table>
這很好。 但是,渲染不應在頁面加載時完成,而僅當我單擊選項卡時,我才決定從jquery調用該動作並填充當時需要的div。
$("#FuncData").click(function () {
$.ajax({
type: "POST",
url: '@Url.Action("ProjectData", "Functional")',
data: { "CategoryId": @(Model.SelectedCategoryId) },
dataType: "html",
success: function(result) {
populateDiv($("#fooDiv"), data);
}
});
});
當我這樣做時,我知道在RenderAction上調用“ AddFuncContent”操作時發生錯誤,提示“不允許子操作執行重定向操作”。
調用Html.RenderAction的頁面和調用我的動作的javascript之間有什么區別?
檢查您是否從操作中返回PartialView()。 請參閱此問題和答案 。
使用POST方法可能是個問題-在初始頁面加載時,您可能在get請求中,並且POST通常設置為保存某些內容然后重定向。
另一個區別是只有ajax版本實際上使用Url。 RenderAction可以直接查找命名的action方法,因此不需要解析Url。 這意味着沒有有效的操作路線,也可以指向其他操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.