ASP.NET MVC: повторное использование представления двумя действиями контроллера
"Добавить" и "Изменить" виды обычно более или менее идентичны. Как я могу повторно использовать представление, чтобы использовать Foos/Add
и Foos/Edit/[Id]
? Как выглядят действия?
Спасибо
Ответы
Ответ 1
Просто укажите имя вида при вызове метода View()
, например
public ViewResult Add() {
//...
return View("Foo");
}
public ViewResult Edit(int id) {
//...
var model = repository.get(id);
return View("Foo", model);
}
Ваше представление должно обрабатывать значения null/empty model для действия Add
, или вы можете заполнить свою модель значениями по умолчанию.
Ответ 2
Возможно, вам захочется использовать шаблон редактора, а не повторное использование одного и того же представления. Шаблон редактора представляет собой частичный вид, который используется для редактирования и/или вставки данных.
Для этого потребуется отдельное представление, но код будет минимальным. Основная часть кода будет в шаблоне, который вы будете повторно использовать для действий "Добавить и редактировать".
После создайте свой шаблон, ваш Add View будет выглядеть как (Razor):
@model Models.Foo
<h2>Add</h2>
<p>
@Html.EditorFor(model => model) // equivalent to EditorForModel()
</p>
И ваш Edit View будет выглядеть так:
@model Models.Foo
<h2>Edit</h2>
<p>
@Html.EditorFor(model => model) // equivalent to EditorForModel()
</p>
Ответ 3
Я бы использовал jQuery ajax. Нажатие на Add или Edit вызовет действие serve, которое вернет тот же PartialView (если вы хотите его повторно использовать).
Затем, в функции успеха ajax-вызова, вы должны просто поместить возвращенный html (из этого PartialView) в определенную часть вашей страницы (или всплывающее окно).
Приятная и чистая и без перезагрузки страницы...