Несколько форм в одном представлении в ASP.Net MVC при сохранении проверки - PullRequest
2 голосов
/ 23 октября 2009

В небольшом веб-приложении, которое я создаю для внутреннего использования, я хочу, чтобы пользователь мог выбрать один из файлов данных для открытия. У меня строго типизированное представление, которое принимает список файлов в качестве модели.

Моя первоначальная версия имела действие Index, которое получало список файлов данных и возвращало представление, затем действие Create для создания нового файла и действие Upload для загрузки существующего файла. Тем не менее, в обоих случаях было бы плохо иметь совершенно новую страницу только для одного текстового поля и кнопки, поэтому я добавил две формы в представление «Индекс», одну для указания «Создать», другую для «Выгрузки», обе с использованием Почтовый глагол.

Это прекрасно работает, плюс все еще сохраняет хорошее наименование URL - даже при том, что Create / Upload не имеет пользовательского интерфейса. Проблема в том, что в конце обоих этих действий я делаю return RedirectToAction («Индекс»); Который по очереди получает данные для отображения и показывает вид - отлично. Но я не получаю подтверждения. Похоже, что для того, чтобы заставить работать помощники ValidationSummary и ValidationMessage, мне нужно, чтобы действие Post вызывалось так же, как действие Get (в данном случае Index). Я изменил все так, чтобы у меня было только действие Get / Post Index и оператор if в действии Post, чтобы увидеть, была ли кнопка Создать или Загрузить. Но это кажется гораздо более грубым решением, чем то, которое я изначально придумал.

Другой вариант, конечно, заключается в создании представлений для Create / Upload, каждое с одним текстовым полем, но я бы предпочел неуклюжий код, чем неуклюжий пользовательский интерфейс.

Есть ли что-то, что я пропускаю, или это просто способ разработки инфраструктуры валидации MVC.

1 Ответ

0 голосов
/ 23 октября 2009

Выглядит так, как будто вы действительно хотите, чтобы это приложение было одной страницей, где происходит весь процесс. Это кажется разумным, потому что оно очень маленькое. В этом случае я бы выбрал одно действие, которое у вас есть, потому что проверка работает из коробки.

Другой вариант, который у вас есть, это поместить сообщения об ошибках в TempData в Upload / Create и использовать их в Index (поместив их в ModelState).

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