В MVC у вас есть виды, частичные виды и макеты. Все это «взгляды» и, по большей части, различие заключается только в том, как вы их используете.
Частичный вид - это просто представление, которое отображается без макета, что может быть сделано с помощью 1) возврата PartialView
из действия или 2) с помощью вспомогательного помощника Html.Partial
Razor.
Макет - это просто представление, на которое ссылается макет для другого вида. Это может быть достигнуто либо 1) вручную, указав макет в представлении через Layout = "~/Views/SomeLayout.cshtml";
, либо 2), используя файл _ViewStart.cshtml
. Единственное, что делает макет, отличный от любого другого представления, - это вызов @RenderBody()
, который указывает, где визуализированный результат любых ссылок на изображение должен быть помещен.
Это очень краткое руководство к представлениям в ASP.NET MVC. Когда дело доходит до использования чего-то вроде AJAX для замены части страницы, важно понять, что на данный момент жизненного цикла страницы нет такой вещи, как частичные представления, макеты и т. Д. Все, что у вас есть, это HTML, который браузер получен от сервера и используется для построения внутреннего представления веб-страницы, называемой «DOM» или Document Object Model. Вы не можете просто заменить «частичный вид» на странице; вы должны заменить часть DOM. Это может звучать как семантика, но это важное различие, потому что клиент, в данном случае веб-браузер, не имеет понятия о том, какие части документа были или не были отображены с помощью частичных представлений на стороне сервера, и не заботится ,
Однако, источник вашей замены может быть частичным, по крайней мере, в том смысле, что вы можете использовать частичный вид для создания результата, который может быть отправлен клиенту в качестве ответа. Метод действия, который отвечает на ваш запрос AJAX, может возвращать PartialView("_SomePartialView")
, и это представление будет отображаться с любыми переданными ему данными без макета и отправляться клиенту в качестве ответа. На данный момент, однако, это просто HTML, и, опять же, не имеет значения, как был создан этот HTML-код. Обратный вызов для вашего запроса AJAX получит этот HTML-код и затем должен что-то сделать с ним. В отличие от обычного запроса браузера, браузер не будет делать ничего с этим ответом автоматически (т. Е. Отображает на нем веб-страницу). Вы несете ответственность за выбор части DOM, которую хотите заменить, и вставьте этот HTML-ответ в этот DOM.
Да, использование AJAX в jQuery для вызова методов контроллера для выполнения сохранения и т. Д. Улучшит работу пользователя.Что касается реализации, то гораздо лучше рассмотреть возможность использования инфраструктуры на стороне клиента, такой как AngularJS и Knockout, чтобы вы обновили динамическую версию своей модели на стороне клиента. Обновление скрытых полей в jQuery может стать очень грязным довольно быстро. – mattytommo
Благодарим вас за информацию! Я посмотрю на AngularJS и Knockout – bbvanee