2012-02-25 3 views
0

Пример сценария:как использовать бритву в качестве пользовательского элемента управления

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

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

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

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

Запросы

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

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

спасибо!

ответ

0

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

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

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

return Redirect(returnUrl); 
} 
+0

Не уверен, что перенаправление на returnUrl - лучший способ, но он решил мою проблему. В моей модели ViewModel я добавил свойство returnURL, которое я установил в UrlRefrrer.ToString() при отображении формы, в то время как использовать это значение для перенаправления при выполнении httpPost. Благодарю. – helloworld

0

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

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

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

Смежные вопросы

 Смежные вопросы