У меня есть страница Contact/Index, разделенная на два столбца (для каждого столбца один PartialView). Слева я показываю список всех своих контактов, а справа детали выбранного/нажатого контакта из указанного списка.
... и предварительный просмотр отлично работает -> после того, как пользователь щелкает запись из списка, я просто вызываю «@Url.Action» для действия в моем контроллере, которое возвращает частичное представление с деталями.
<div class = "row">
<div class = "col-md-8 col-sm-12">
<div id = "sectionList">
@{await Html.RenderPartialAsync("_PartialList", Model.Contacts);}
</div>
</div>
<div class = "col-md-4 col-sm-12">
<div id = "sectionPreview" style = "display: block">
@{await Html.RenderPartialAsync("_PartialPreview", Model.Contact);}
</div>
<div id = "sectionEdit" style = "display: none">
@{await Html.RenderPartialAsync("_PartialEdit", Model.Contact);}
</div>
</div>
</div>
Но у меня проблема с "редактированием". В форме сведений у меня есть кнопка для РЕДАКТИРОВАТЬ, и когда пользователи нажимают ее, я хочу СКРЫТЬ PartialView для предварительного просмотра (id = "sectionPreview") и ПОКАЗАТЬ кнопку для редактирования (id = "sectionEdit").
Я уже пробовал играть с сохранением разных стилей (disply: block или none) в ViewBag и применять их к каждому разделу, но это не кажется правильным подходом, потому что все PartialViews (даже если для display установлено значение none) по-прежнему получают предоставлено.
Каков наилучший способ/практика для выполнения этой работы?
Другой подход заключается в использовании ajax для загрузки частичного представления. На стороне клиента используйте ajax для вызова функции на стороне сервера и передачи параметра фильтра (id). На стороне сервера вы можете запросить базу данных с идентификатором и вернуть PartialView с моделями.
Затем в успешной функции обратного вызова Ajax вы можете загрузить html частичного просмотра в связанную область на странице с помощью jQuery:
success: function (result) {
$("#searchResultsGrid").html(result);
}
И скройте связанный div, например:
$("#sectionPreview").hide();
Вы можете нажать здесь для примера кода.
Спасибо. Я посмотрю на пример кода и вернусь с результатом
Я внимательно изучил то, что вы предлагаете, но если я правильно понимаю, когда я скрываю/показываю частичные представления (разделы) с помощью ajax (jquery), весь html-код все еще отображается (даже из скрытых частичных представлений)?
@TheMixy, используйте javascript, чтобы показать/скрыть партиал, если вы не хотите отображать другое представление, просто удалите содержимое в div: $("#div1").empty()
Спасибо. Должен ли я открыть новую тему для дополнительного вопроса? (ненавязчивая проверка ajax не отображается/не работает в загруженной ajax форме частичного просмотра (редактирования)...)?
Лучше начать новую тему и опубликовать свои текущие коды.
Спасибо. Я нашел решение для проверки, не отображаемой в этой теме: stackoverflow.com/questions/22046168/…
В качестве рабочего решения/обходного пути я визуализирую оба частичных представления, но добавил в модель переменную «Режим». В каждом частичном просмотре я проверяю «Режим» и возвращаю соответствующий HTML-код.