Как правильно создать и обработать группу связанных элементов управления в опубликованных формах?
При использовании ASP.NET MVC я вижу, что стандартным вариантом является создание нескольких входов и присвоение им одинакового значения атрибута «name». Как это:
<input name="OrderOptions" type="checkbox" value="1" />
<input name="OrderOptions" type="checkbox" value="2" />
...
<input name="OrderOptions" type="checkbox" value="N" />
А при обработке форм мы получаем все значения в строке через запятую:
public OrderController
{
public ActionResult (FormCollection form)
{
string selection = form["OrderOptions"];
}
}
Теперь, как это должно быть сделано с любой серверной технологией? Нарушает ли присвоение входных значений одно и то же имя правилам валидации или что-то в этом роде?
Еще один вопрос: если бы я использовал встроенные помощники HTML, я бы получил входные данные, сгенерированные как с атрибутом "id", так и с именем "name". Как это:
<input id="OrderOptions" name="OrderOptions" type="checkbox" value="1" />
<input id="OrderOptions" name="OrderOptions" type="checkbox" value="2" />
...
<input id="OrderOptions" name="OrderOptions" type="checkbox" value="N" />
Но явно недопустимо иметь в документе несколько элементов с одинаковым «идентификатором». Тем не менее, это работает.
Если я отбрасываю стандартные помощники и создаю свои собственные, нужно ли мне вставлять атрибут «id» во входные данные, если он мне действительно не нужен (за исключением некоторых случаев с ярлыками)? Некоторые люди говорят, что мы должны всегда назначать атрибуты «id» и «name» элементам, потому что есть некоторая несовместимость со старыми браузерами, и атрибут «name» устарел (я знаю, что это только для некоторых других элементов) Но даже если бы я захотел, мне бы пришлось назначить разные значения идентификатора / имени для элементов ввода, и тогда я не смогу обработать их как группу. Вы видите мою дилемму?
Любой совет с благодарностью.