asp.net mvc публикует разные мнения в одной форме - PullRequest
3 голосов
/ 29 октября 2008

У меня есть область формы на мой взгляд. Если я нажимаю кнопку A , я хочу отправить /Books/1, а если я нажимаю кнопку B , я хочу отправить /Books/2

Как мне добиться этого с MVC?

Ответы [ 4 ]

3 голосов
/ 29 октября 2008
<form id="form1" name="form1" action="/Books/" method="get">
<input type="text" name="search" value="">
<input type="submit" name="id" value="1">
<input type="submit" name="id" value="2">
</form>
1 голос
/ 29 октября 2008

Звучит так, как будто вы хотите позвонить в контроллер книг, скажем, с помощью действия «Поиск». Так, например, вы можете позвонить в / Books / Search / <поисковое выражение> / 1 или / Books / Search / <поисковое выражение> / 2 и т. Д. (Есть несколько разных способов форматирования этих URL, но это в основном это вопрос личных предпочтений) Если вы хотите, чтобы URL-адреса отображались так, как вы их называли выше (без действия в URL-адресе), это можно сделать с помощью маршрутизации, что-то вроде этого:

routes.MapRoute(
    "Books",
    "Books/{searchExpr}/{pageId}",
    new { controller = "Books", action = "Search", searchExpr = "", pageId = 1 }
);

Я думаю, что основная проблема заключается в том, что вы пытаетесь использовать всю парадигму WebForms PostBack в ситуации, когда вам, вероятно, лучше отправлять информацию на сервер в виде URL-адреса или строки запроса. Единственный раз, когда вы действительно собираетесь публиковать здесь данные формы, это когда пользователь вводит что-то в поле поиска и нажимает кнопку Поиск - в этот момент контроллер передает выражение поиска в соответствующий View, поместив его в ViewData, и оттуда View может извлечь его и снова заполнить это текстовое поле на странице результатов.

1 голос
/ 29 октября 2008

Представления MVC могут иметь несколько форм на «странице», поэтому просто создайте отдельные разделы и присвойте каждому свое действие формы.

<form id="form1" name="form1" action="/Books/1" method="get">
<!--...form fields-->
</form>


<form id="form2" name="form2" action="/Books/2" method="get">
<!--...form fields-->
</form>
0 голосов
/ 29 октября 2008

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

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