Формы в MasterPage и Представления - PullRequest
2 голосов
/ 30 ноября 2008

У меня есть главная страница, от которой наследуются все мои представления. У меня проблема с тегом формы, который создается на главной странице, а затем с тегом формы, который создается в представлении.

Из-за того, что форма находится внутри формы главной страницы, все мои постбэки отправляются в метод Index контроллера, и это вынуждает меня создать новый метод Index, который вызывает HttpPost.

Кроме того, это вызывает проблемы с маршрутами, такими как: / projects / add / и / projects / delete / 1, где все маршрутизируется по методу индекса.

WTF? Я что-то здесь упускаю?

Спасибо всем

Ответы [ 4 ]

1 голос
/ 30 ноября 2008

По моему мнению, вы действительно должны думать о MasterPages как о макетах, а не как о функциональных страницах. Фактически представления вообще не «наследуют» от главных страниц. В традиционных веб-формах мастер-страницы фактически являются пользовательскими элементами управления. Поэтому я постараюсь не помещать функциональность базового класса в мастер-страницу. Так что, возможно, именно в этом и заключается некоторая путаница.

1 голос
/ 30 ноября 2008

Удалить форму с главной страницы.

Посмотрите несколько примеров видео здесь , чтобы лучше понять философию MVC.

Кстати: в ASP.NET MVC обратной передачи нет.

0 голосов
/ 30 ноября 2008

Если вам нужны общие элементы формы на каждой странице, и поэтому у вас есть форма на главной странице, переместите элементы формы в пользовательский элемент управления, расположенный в общей папке, вместе с файлом site.master. Затем включите пользовательский элемент управления через Html.RenderPartial на каждой странице просмотра. Для этого потребуется только 1 строка кода и, возможно, тег div для каждого представления, что не плохо.

Кстати, форма, расположенная на главной странице, является логином или поисковым элементом случайно?

0 голосов
/ 30 ноября 2008

ASP.NET MVC не должен делать "PostBacks" ... это полностью упускает смысл. Удалите все имеющиеся у вас «в значительной степени охватывающие теги формы» и поместите тег «формы» только вокруг полей ввода, которые предназначены (для определенной цели) для POST для какого-либо действия.

Тот факт, что у вас есть всеобъемлющий тег формы (как и в случае с традиционным asp.net), означает, что у вас нет определенной причины для этой формы, и в этом (опять же) отсутствует точка MVC.

Это более старая статья, но она может помочь с различиями между традиционным и MVC: ASP.NET MVC в реальном мире

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