【发布时间】:2015-09-14 14:32:26
【问题描述】:
如何处理 ASP MVC 5 中单选按钮的回发? This 告诉如何为文本输入执行此操作,但不是单选按钮。对于单选按钮,所有单选按钮都具有相同的名称,因此该模型不适用。我需要 if 语句的 for 循环,还是有简单的方法?
一些示例代码:
<ul class="dropdown-menu report-checkbox-dropdown" role="menu" aria-labelledby="menu1">
<li><input type="radio" name="quantity" value="all_quantities" data-stoppropagation='true' />All items</li>
<li><input type="radio" name="quantity" value="in_stock" data-stoppropagation='true' />In Stock</li>
<li><input type="radio" name="quantity" value="out_of_stock" data-stoppropagation='true' />Out of Stock</li>
</ul>
当我在做的时候,我会问如何使用复选框来做到这一点——可能是一样的。
编辑
我试着坚持@Request.Form.AllKeys 只是想看看它会返回什么,但我得到的只是System.String[]。
【问题讨论】:
-
您是否尝试在回发后保持选中单选按钮?为什么不使用保存页面加载信息的 Viewbag 变量?
-
你的意思是什么“所以模型不适用”?当然可以。您使用
name="quantity"创建一个单选按钮组,这意味着它将绑定到一个名为Quantity的属性 -
@StephenMuecke 如果我设置要检查的“数量”的值,它怎么知道要检查哪个按钮?它们都有名称“数量”。这与名称和控件一一对应的文本输入相反。
-
@code 是的,这是一个解决方案。我了解到应该尽量避免使用 viewbag。也许这过于严格了。看来应该有更正道的方式。此外,在我当前的实例中,我有一个使用 ajax 从数据库中提取的数据动态创建的复选框列表。换句话说,javascript 为某个表中的每条记录创建一个列表框。似乎使用 viewbag 会有点笨拙,因为我需要通过在控制器中重复我已经用我的 javascript 完成的查询来填充 viewbag。但也许这没什么大不了的。
-
@abalter,您有 3 个单选按钮,其值为“all_quantities”、“in_stock”和“out_of_stock”。如果您有属性
Quantity,那么当您发布时,Quantity将是这些值之一,具体取决于选择的按钮。但是你为什么不使用@Html.RadioButtonFor(m => m.Quantity, "all_quantities")等,所以你得到了2路模型绑定(以及使用html助手的所有其他特性)。如果Quantity的值是(比如说)“in_stock”,那么在渲染视图时将选择第二个单选按钮。
标签: asp.net-mvc forms postback jradiobutton