Несколько строк имеют несколько кнопок отправки, я должен сделать форму для каждой кнопки? - PullRequest
3 голосов
/ 29 января 2010

Я перечисляю около 20 строк, каждая строка представляет ордер.

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

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

<tr>
<td>
<form method="post" action="/orders/do1"><input type=button ... /></form>
<form method="post" action="/orders/do2"><input type=button ... /></form>
<form method="post" action="/orders/do3"><input type=button ... /></form>
</td>
</tr>

Должен ли я создать 3 формы для каждой кнопки в каждой строке моего списка?

(это будет означать 20 строк x 3 формы = 60 форм на странице)

Это нормально? (то есть или есть лучший способ сделать это?)

Ответы [ 8 ]

1 голос
/ 29 января 2010

Из фрагмента, который вы опубликовали, я предполагаю, что вам не нужно фактически отправлять какие-либо данные формы для вашего действия - просто вызывать правильное действие (возможно, с некоторыми данными, которые можно указать непосредственно в URL действия, например, идентификатор / индекс)

Если это так, то вам даже не нужна кнопка отправки для этого. Просто простая ссылка (которую вы можете стилизовать, чтобы она выглядела как кнопка, либо вы сами, либо используя jQueryUI , таким образом, все будет просто и красиво)

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

См. здесь (второй ответ, хе-хе, принятый на самом деле использует несколько форм) и здесь (этот на самом деле использует некоторые интересные вещи, которые могут быть немного излишним, и не совсем уместным при создании неизвестного количества кнопок отправки, но тем не менее интересным)

1 голос
/ 30 января 2010

Поддержка нескольких кнопок отправки в представлении ASP.NET MVC

Проверьте это решение! Мне нравится этот шаблон, потому что подходит стиль MVC.

1 голос
/ 29 января 2010

Я бы использовал постбэк jQuery, а не форму, но это зависит от того, что вы делаете в вашем контроллере.

Было бы удобно, если бы вы могли расширить этот вопрос, включив эту деталь.

Например, если кнопки «Создать», «Удалить» и «Обновить», то использовать одну форму, переходя к другому ActionResult.

Это строка должна быть частичным представлением ИМХО, и вы должны иметь одну форму.

0 голосов
/ 30 января 2010

Есть два реалистичных варианта.

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

Есть и другие альтернативы, но у них есть ограничения.

  1. В зависимости от JavaScript нарушает правило 2 .
  2. Невозможно получить одну форму на строку таблицы с правильной разметкой.
  3. Использование <button> элементов с одной большой формой позволит вам иметь разумные метки и значения, но с перерывами в Internet Explorer (до версии 8 IIRC).

Я работаю в предположении, что вы хотите что-то вроде «Удалить» и «Редактировать» для каждой строки и хотите избежать «Удалить строку 1», «Редактировать строку 1» и т. Д. возможно, вы можете иметь одну большую форму, использовать <input type="submit"> и иметь согласованные имена и разумные значения.

0 голосов
/ 29 января 2010

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

<input type=button onclick="do_action_one(row_i_value1, ....)" ... />
<input type=button onclick="do_action_two(row_i_value1, ....)"... />
<input type=button onclick="do_action_three(row_i_value1, ....)"... />
0 голосов
/ 29 января 2010

Разве это не вопрос asp.net? Не могли бы вы использовать репитер, даталист, датагрид? Тогда вы можете обрабатывать каждое нажатие кнопки с помощью элементов управления OnItemCommand.

0 голосов
/ 29 января 2010

Нет .. Нет .. Нет. Несколько форм плохая плохая идея. Да, ты можешь это сделать. И да, вы будете испытывать странное поведение, такое как «что происходит, когда пользователь нажимает ввод?»

Каждый из браузеров обрабатывает несколько форм в одном HTML-документе по-разному. Избавьте себя от неприятностей и справьтесь с этим по-другому.

0 голосов
/ 29 января 2010

Нет. Asp.net ненавидит видя несколько форм. Просто дайте кнопкам другой идентификатор / имя / значение или что-то в этом роде.

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