2008-11-30 2 views
2

У меня есть главная страница, на которой все мои взгляды унаследованы. Проблема, с которой я столкнулась, - это тег формы, который создается на главной странице, а затем тег формы, который создается в поле зрения.Формы в MasterPage и представлениях

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

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

WTF? Я что-то пропустил?

Thanks Any

+0

У вас есть явная причина наличия формы на вашей главной странице? ASP.NET позволяет использовать несколько форм на странице, поэтому вам нужно самостоятельно управлять формами. – MrJavaGuy 2008-11-30 18:04:49

ответ

1

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

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

BTW: В ASP.NET MVC нет обратной передачи.

+0

В MVC нет ничего, что предотвращало бы обратную передачу для одного и того же действия, создавшего представление, однако это не рекомендуется. – MrJavaGuy 2008-11-30 19:18:52

1

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

+0

главная страница не имеет функциональности. Из коробки он имеет элемент формы. Таким образом, мои контейнеры, которые подают данные в мастер, сами формируются, поэтому теперь у вас есть серверная форма внутри другой формы. Я прокомментировал их отдельно и по-прежнему та же проблема. – IEnumerator 2008-12-01 15:38:21

+0

Версия мастер-страниц MVC НЕ имеет элемент формы из коробки. Возможно, вы выбрали версию Webforms. Вы должны быть осторожны, когда вы выбираете главную страницу из шаблонов в Visual Studio. Легко выбрать неправильный. – 2008-12-03 12:44:14

0

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

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

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

0

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

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

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