【问题标题】:How to repopulate radio buttons postback in ASP MVC.5如何在 ASP MVC.5 中重新填充单选按钮回发
【发布时间】: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 =&gt; m.Quantity, "all_quantities") 等,所以你得到了2路模型绑定(以及使用html助手的所有其他特性)。如果Quantity 的值是(比如说)“in_stock”,那么在渲染视图时将选择第二个单选按钮。

标签: asp.net-mvc forms postback jradiobutton


【解决方案1】:

为什么不使用 RadioButtonFor 助手,这里解释: Conditionally include checked attribute in html.RadioButtonFor (MVC4/Razor).

这个答案也可能有帮助: MVC RadioButtonFor How & What to POST back to Controller

【讨论】:

  • 可以,但有一些理由不这样做。 (1) MVC 6 是moving to tag helpers,(2) 单选按钮不适用于特定模型的特定字段——它们用于过滤结果表。我可以创建一个视图模型,但这只是做更多的工作。 (3) 我的复选框是使用 Javascript 动态生成的,并且 (4) 我认为这并不重要,因为我仍然应该能够使用 value=@Request.Form...
  • @abalter 你把你的
      放在
    里面了吗?如果没有,则无法在 Request.Form 对象中捕获输入值。
  • 是的,它在一个表单中。
  • @abalter 你提交这个特殊的表格吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
相关资源
最近更新 更多