gpt4 book ai didi

javascript - 从 jquery 函数运行而不是从 @Render.Action 运行时,PartialViewResult 操作会给出错误

转载 作者:行者123 更新时间:2023-11-28 10:16:46 25 4
gpt4 key购买 nike

我有一个 Action ,当我在开发过程中工作时,它被 @Html.Render Action 调用,渲染了部分 View 并且工作得很好。

该部分 View 正在渲染一个表格,其中每个 TR 都有另一个 @Html.RenderAction。像这样:

<div id="fooDiv">
@{Html.RenderAction("ProjectData", "Functional", new { categoryId = Model.SelectedCategoryId});}
</div>

它渲染了其他几个部分,其中之一是:

<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);
}
});
});

当我这样做时,我知道调用“AddFuncContent”操作的 RenderAction 会出现错误,指出“不允许子操作执行重定向操作。”

页面调用 Html.RenderAction 和 javascript 调用我的操作有什么区别?

最佳答案

使用 POST 方法可能是问题所在 - 在初始页面加载时,您可能处于 get 请求中,并且 POST 通常设置为保存某些内容然后重定向。

另一个区别是只有 ajax 版本实际上使用 Url。 RenderAction可以直接查找指定的action方法,因此不需要解析Url。这意味着该操作是否没有有效的路由并不重要,或者该路由也可能指向不同的操作。

关于javascript - 从 jquery 函数运行而不是从 @Render.Action 运行时,PartialViewResult 操作会给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com