как использовать бритву в качестве пользовательского контроля - PullRequest
0 голосов
/ 25 февраля 2012

Пример сценария:

Допустим, мне нужно создать пользовательский элемент управления, который отображает список продуктов для указанной категории (CategoryID, переданный в качестве ввода в контроллер Index GET).

Кроме того, в списке ниже есть кнопка «Добавить», которая вызывает контроллер сведений о категории (GET) (передает categoryID контроллеру), который отображает форму с текстовым полем и кнопкой для добавления новой категории.

Как только пользователь входит в категорию Details и нажимает submit, вызывается контроллер Details (POST), который сохраняет данные и должен перенаправить пользователя обратно на страницу, с которой они были вызваны.

Этот пользовательский элемент управления (файл бритвы) может использоваться несколько раз на одной странице.

Запросы

1) Как лучше всего интегрировать такой элемент управления в представлениях страниц, чтобы форма в каждом пользовательском элементе управления была автономной и не конфликтовала с другими экземплярами того же пользовательского элемента управления на той же странице?

2) Я пытался Html.RenderAction("Index","Category",new {categoryName = "toys"}) Это хорошо работает при отображении категории, и нажатие на кнопку «Добавить» приводит пользователя на страницу «Добавить новую категорию». Проблема в том, какой код я должен написать так, чтобы я мог вернуть пользователя на ту же страницу просмотра, где был встроен пользовательский элемент управления (даже лучше, если я смогу прокрутить окно до положения, в котором был размещен элемент управления)?

спасибо!

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Когда данные публикуются в частичном представлении для соответствующего действия, они не имеют контекста основного представления / действия. Таким образом, мы можем отправить данные в основное действие, чтобы состояние модели было сохранено и могло быть проверено.

Но если вы хотите опубликовать данные в частичном представлении / действии, мы можем перенаправить на основной вид / действие добавление пост-продукта. (Но если введены некоторые недействительные данные, мы не сможем отобразить ошибку проверки)

[HttpPost]
public PartialViewResult AddProduct(string productId,string returnUrl)
{
  //Add product

return Redirect(returnUrl);
}
0 голосов
/ 25 февраля 2012

То, что вы ищете, это частичное представление, а именно шаблон редактора.

В вашей папке Views создайте общую папку, а внутри нее создайте папку EditorTemplates. Оттуда создайте строго типизированное частичное представление, названное так же, как часть модели.

Тогда на вашем главном экране позвоните EditorFor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...