asp.net mvc, как он решает, какой вид загрузить - PullRequest
0 голосов
/ 24 августа 2010

Я пытаюсь создать приложение asv.net mvc, которое будет использовать такие URL-адреса, как:

/ Controller / [Number] / Action / Id

Iчтобы он всегда вызывал мой контроллер и передавал Number и Id нормально ... Однако теперь я хочу вернуть другое представление в зависимости от Number У меня могут быть такие параметры, как:

if([Number] == 1) { return View("ViewName");}
if([Number] == 2) { return View("ViewName2");}

однако я вместо этого задавался вопросом, есть ли способ изменить ядро, чтобы вместо поиска в ~/Views/controller/action.aspx я мог иметь свой собственный метод, который выполнял некоторую проверку Number, а затем передавался виртуальному провайдеру файлов:другой путь

Надеюсь, это имеет смысл!

Ответы [ 3 ]

0 голосов
/ 24 августа 2010

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

Но проще вернуть полный путь к представлению, которое вы хотите вернуть.

return View("~/myviews/ViewName3.aspx");

Это отобразит ViewName3 из данного каталога.

0 голосов
/ 24 августа 2010

Вам нужно заглянуть в / google, создав собственный движок просмотра.

По звукам вещей вы, вероятно, просто хотите расширить встроенную WebFormViewEngine и просто переопределить местоположения и метод .FindView().

HTHS
Charles

0 голосов
/ 24 августа 2010

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

Затем вы можете сделать что-то особенное внутри атрибута фильтра действий.

Или вы можете передать Number объекту Model, а затем Object вернуть верный путь просмотра.

В любом случае, ваш инстинкт попыток скрыть слишком много логики от контроллера является здравым, особенно если [Number] каким-то образом касается бизнеса, а не проблемы с точки зрения.

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