簡體   English   中英

從jquery函數而非@ Render.Action運行時,PartialViewResult操作會給出錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM