我列出了大约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个表格)
这样做还可以吗? (即或者有更好的方法吗?)
答案 0 :(得分:1)
我使用的是jQuery回发而不是表单,但这取决于你在控制器中做了什么。
如果您可以扩展问题以包含该细节,那将会很方便。
例如,如果按钮是Create,Delete和Update,则使用单个表单,转到另一个ActionResult。
它的行应该是局部视图恕我直言,你应该有一个单一的表格。
答案 1 :(得分:1)
从您发布的代码片段中,我将假设您并不关心实际向您的操作提交任何表单数据 - 只需调用正确的操作(可能有一些数据可以直接在动作网址,如id / index)
如果是这种情况,那么您甚至不需要提交按钮。只是一个简单的链接(您可以将其设置为按钮,无论是您自己还是使用jQueryUI,从而保持简单和漂亮)
如果您确实需要将表单数据提交到您的操作,只需将提交按钮设置为相同的名称和不同的值,然后检查(或让您的模型绑定器完成)确切地调用了哪个操作让你的管制员采取相应的行动。
请参阅here(第二个答案,嘿嘿,被接受的答案实际上使用多种形式)和here(这个实际上是使用了一些可能有点矫枉过正的时髦东西,而不是在生成未知数量的提交按钮时完全合适,但仍有兴趣)
答案 2 :(得分:1)
Supporting multiple submit buttons on an ASP.NET MVC view
检查此解决方案! 我喜欢这种模式,因为适合MVC风格。
答案 3 :(得分:0)
没有。 Asp.net HATES 看到多种形式。只需给按钮一个不同的ID /名称/值等。
答案 4 :(得分:0)
否..否..否。多种形式是一个坏主意。是的,你可以这样做。是的,您会遇到奇怪的行为,例如“当用户推入时会发生什么?”
每个浏览器处理同一个html文档中的多个表单略有不同。省去麻烦并以不同的方式处理。
答案 5 :(得分:0)
这不是asp.net的问题吗?你能不能使用转发器,datalist,datagrid?然后,您可以使用控件OnItemCommand处理每个按钮单击。
答案 6 :(得分:0)
我认为你应该在这种情况下使用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, ....)"... />
答案 7 :(得分:0)
有两个现实的选择。
还有其他选择,但它们有局限性。
<button>
元素可以让您拥有合理的标签和值,但是在Internet Explorer中会出现中断(直到版本8 IIRC)。我正在假设您希望每行都有“删除”和“编辑”之类的内容,并希望避免“删除第1行”,“编辑第1行”等。如果这是一个不正确的假设,那么它可能是你可以有一个大的形式,使用<input type="submit">
并且具有一致的名称和合理的价值。