Следуя предыдущему ответу, здесь я публикую пример того, как вы можете это сделать:
$.post("yourcontroler/LoadSections", AddAntiForgeryToken({ typeId: selectedType }),
function (response) {
$(".types-container").html(response);
}).done(function () {});
* Игнорируйте метод «AddAntiForgeryToken», если вам это не нужно, это просто что-то для безопасности. используйте для моих запросов Post, отправленных с помощью Ajax.
Ответ, добавленный в контейнер с ".html (response)", заключается в том, что контроллер отправит обратно частичное представление, которое содержит правильный сгенерированный HTML, уже обработанный с условиямиты упомянул. Как упомянуто user1538301 , решение по выбору пользователя должно быть обработано на стороне сервера, чтобы представление могло «измениться» и соответственно отобразить разделы.
Вот пример кодана стороне сервера:
public ActionResult LoadSections(string typeId)
{
var model = this.LogicService.ProcessSelectedType(productId).Result;
return PartialView("_Sections", model);
}
И теперь PartialView получит модель со значением свойства, которое помогает решить, какой раздел будет отображаться:
@model Project.ViewModels.Sections.SectionsViewModel
@if (string.IsNullOrEmpty(Model.TypeId) && Model.TypeId == "TypeA")
{
<div class="row ml-0">
<p class="w-110px">Here I show the TypeA section</p>
<div class="TypeA">
// TypeA content goes here
</div>
</div>
}
@else if (string.IsNullOrEmpty(Model.TypeId) && Model.TypeId == "TypeB")
{
<div class="row ml-0">
<p class="w-110px">Here I show the TypeA section</p>
<div class="TypeA">
// TypeB content goes here
</div>
</div>
}
Я надеюсь, что это может датьу вас есть представление о том, как вы можете реализовать то, что вам нужно.
Другой вариант, который у вас есть, - это манипулировать каждым контейнером раздела, показывающим / скрывающим в зависимости от выбора пользователя. Тем не менее, я буду рекомендовать первый вариант.
regards,