Проблема возникает в этой строке:
window.location.href = '@Url.Action("PartialViewB", "ParentController", new { CargoType = "PartialViewA" })';
Используя location.href
, вы заменяете целые элементы существующей страницы на возвращенную страницу из действия контроллера, поэтому существующее представление перезаписывается новым.
Предполагается, что у вас есть эта настройка:
<div id="partial">
@Html.Partial("_PartialViewA")
</div>
Затем необходимо выполнить обратный вызов AJAX внутри блока else
и добавить его в результат success
, помеченный местозаполнителем предыдущего частичного представления, как показано в следующем примере:
<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");
}