2016-11-10 5 views
0

Я изучаю ASP.NET MVC для создания веб-приложения.Change View template

У меня есть 2 модели: fooA и fooB (имеет атрибут типа fooA). Контроллеры и Просмотров сгенерирована автоматически.

Теперь я хочу сделать небольшое изменение в создать вид из fooB:

  • Если имеются записи о fooA затем появляется нормальный выпадающий;
  • Если нет записей из fooA затем появляется кнопка со следующим поведением:
    • Сохранить оставшиеся входные данные;
    • Перенаправление на fooAсоздать вид;
    • Переадресовать обратно в fooBсоздать вид с восстановленными данными.

Я надеюсь, что я сделал хорошую работу, объясняющую.

Мои проблемы начинаются с вопроса: следует ли мне делать это изменение в «Стороне обзора» или «Сторона»? Тогда как я могу это сделать?

спасибо.

+0

Ну, вы можете сделать это в режиме просмотра с помощью Razor или jQuery, это зависит от того, какой исходный код вы используете. – Carlos28

+0

Я не включил исходный код, потому что это в значительной степени шаблон, созданный Visual Studio. – nervousDev

ответ

0

Из вашего описания, я думаю, что это то, что вы хотите. Когда пользователи переходят к виду, содержащему fooB, отобразите drop-down list, если у него есть данные. Если нет, попробуйте создать данные для drop-down list. Вот мое предложение.

  1. При переходе пользователей к просмотру, содержащей fooB, просто отобразить drop-down list (даже если он пуст), и кнопка называется Add (или что вы хотите) рядом с ним.
  2. Когда пользователи нажимают Add, появляется всплывающее окно, которое содержит необходимые поля для ввода данных для drop-down list.
  3. Когда пользователь нажимает Create, просто сделайте Ajax звонок на сервер для создания данных. Затем отобразите сообщение об успешном завершении или сбое и обновите drop-down list для новых данных, если это необходимо.

Таким образом, вам не нужно перенаправлять назад и вперед между страницами, а также пытаться поддерживать данные через процесс перенаправления.

Надеюсь, вы поняли, что я имею в виду. Не стесняйтесь оставлять вопросы, если найдете что-то непонятное.

+1

Я знаю, что было бы проще. Дело в том, что мне нужно перенаправить на «Создать представление» и перенаправить обратно с восстановленными данными. Это требование. Спасибо. – nervousDev

0

Так что, если вы знаете, если есть данные о fooA при загрузке страницы, и это не изменится, то вы можете просто использовать Бритваif заявление в файле cshtml:

@if (fooA != null) 
{ 
    ...code with dropdown... 
} 
else 
{ 
    ...code with button... 
} 

Sample

Это вы ищете?

+0

Что я знаю. Моя проблема связана с «действием кнопки». Мне нужно выполнить эту последовательность шагов: сохранить данные, перейти на страницу, перенаправить обратно с восстановленными данными. Спасибо! – nervousDev

+1

Так что, возможно, использовать Bootstrap modal в качестве редактора fooA (http://v4-alpha.getbootstrap.com/components/modal/)? – Carlos28

0

Увидеть некоторые комментарии и тот факт, что «fooA» необходимо создать в отдельном представлении. Реально, это потребует изменений в представлении и контроллере, но основная часть операций, которые вам понадобятся, будет находиться в действии контроллера.

Существуют десятки вариантов, но я это маршрут, я бы (так возьмите его с зерном соли):

  • Have на MyController.CreateFooB действие, которое ваш стандартный [HttpPost] действия для создание модели fooB когда fooA не нужно создавать
  • Иметь MyController.CreateFooBAndRedirectToFooA, который также является [HttpPost]
    • Это действие будет нуждаться в fooB View Model в качестве параметра, и создаст модель на вашем databa себе или устройство хранения
    • после того, как модель создана, Перенаправление к MyController.CreateFooA, что является [HttpGet] действием, и передать идентификатор FooB модели к действию (таким образом вы можете выполнить переадресацию назад
    • После того как пользователь отправляет на MyController.CreateFooA с их [HttpPost], создать модель а и выполнить другой перенаправлять MyController.EditFooB, так что пользователь может связать новый FooA к FooB

Как вы реализуете EditFooB вам очень подходит (передавая идентификатор A и помещая его в форму обновления, заставляя пользователя выбирать его из выпадающего списка и т. Д.). Но в конечном счете, с рабочим процессом, которую вы описали, вы должны будете сделать Post создать B ->Перенаправление создать ->Опубликовать Создать ->Перенаправление Обновление Аргументы B