【发布时间】:2009-07-10 15:27:56
【问题描述】:
在已发布的表单上创建和处理一组相关控件的正确方法是什么?
通过使用 ASP.NET MVC,我看到一个标准选项是创建多个输入并为它们分配相同的“名称”属性值。像这样:
<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”属性(某些标签情况除外)?有些人告诉我们必须始终为元素分配“id”和“name”属性,因为与旧浏览器存在一些不兼容,并且“name”属性已被弃用(我知道它仅适用于其他一些元素)。但即使我愿意,我也必须为输入元素分配不同的 id/name 值,然后我无法将它们作为一个组进行处理。你看到我的困境了吗?
非常感谢任何建议。
【问题讨论】:
标签: asp.net asp.net-mvc html