gpt4 book ai didi

javascript - 如何在与 PartialView A 交互时切换到 PartialView A 到 PartialView B?

转载 作者:行者123 更新时间:2023-11-30 20:03:07 28 4
gpt4 key购买 nike

有一个 ParentPage,它在右 Pane 中显示 PartialViewA。在 PartialViewA 中有一个下拉菜单。在选择特定值时,我想用 PartialViewB 替换 PartialViewA。这可能吗?我该怎么做?

我试过了:(PartialViewA:)

<script>
$(document).ready(function () {
alert('aa');
$("#drpisEmpty").change(function () {
if ($(this).val() == "loaded") {
alert($(this).val());
}
else {
window.location.href = '@Url.Action("PartialViewB", "ParentController", new { CargoType = "PartialViewA" })';

}
});
});
</script>

CallCargoTypePartialView:(ParentController)

  public ActionResult CallCargoTypePartialView(string CargoType)
{
if (CargoType == "PartialViewA")
{
return View("_PartialViewA");
}
else if (CargoType == "PartialViewB")
{
return View("_PartialViewB");
}
return View("_PartialViewA");
}

我面临的问题是,当我从 PartialViewB 或 vice verce 中调用 PartialViewA 时,整个页面(连同父页面)被 PartialView 的输出替换。

最佳答案

问题出现在这一行:

window.location.href = '@Url.Action("PartialViewB", "ParentController", new { CargoType = "PartialViewA" })';

通过使用 location.href ,您将用 Controller 操作返回的页面替换现有页面中的整个元素,因此现有 View 将被新 View 覆盖。

假设您有此设置:

<div id="partial">
@Html.Partial("_PartialViewA")
</div>

然后您需要在 else block 中执行 AJAX 回调并将其附加到 success 结果中,该结果由先前局部 View 的占位符标记,如下例所示:

<script>
$(document).ready(function () {
alert('aa');
$("#drpisEmpty").change(function () {
if ($(this).val() == "loaded") {
alert($(this).val());
}
else {
$.ajax({
type: 'GET',
url: '@Url.Action("CallCargoTypePartialView", "ParentController")',
data: { CargoType: "PartialViewB" }, // example passed data
success: function (result) {
// replace first partial view with the second one
$('#target').html(result);
},
error: function (...) {
// error handling
}
});

}
});
});
</script>

另请注意,您应该返回 PartialView() 而不是 View():

public ActionResult CallCargoTypePartialView(string CargoType)
{
if (CargoType == "PartialViewA")
{
return PartialView("_PartialViewA");
}
else if (CargoType == "PartialViewB")
{
return PartialView("_PartialViewB");
}
return PartialView("_PartialViewA");
}

关于javascript - 如何在与 PartialView A 交互时切换到 PartialView A 到 PartialView B?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53167022/

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