剃刀 - 在Foreach循环中检查单选按钮

时间:2013-12-13 14:43:12

标签: asp.net asp.net-mvc razor radio-button checked

我在要发布的表单中的foreach循环中有一个单选按钮。我希望在列出它们时检查第一个。下面的checked = "checked"无济于事。只有单个单选按钮才有效。

<form action="/logged/hotel" method="post" >
    @foreach (var item in ViewBag.companies)
    {
       <input type="radio" name="graph" value="@item.Value" checked="checked" /> @item.Text<br />
    }
    <input type="submit" value ="LOG IN" />
</form>

4 个答案:

答案 0 :(得分:0)

添加名称属性,这会将您的单选按钮组合在一起,只显示一个选中。

答案 1 :(得分:0)

只能检查一组中的一个单选按钮。 所有单选按钮都在同一组中。 你想把它们放在一个不同的集合中,所以说

name="@item.Value"

然而MVC不喜欢这样,所以你必须做类似

的事情
[HttpPost]
public ActionResult MyGraphPage(GraphViewModel vm){
    foreach(var company in MyDataContext.Companies){
        if(Request.Form.AllKeys.Contains(company.Value){
            //show the graph
        }
    }

答案 2 :(得分:0)

如果你只是想要检查第一个,你可以做到这一点,它不是最优雅的解决方案,但有效。

<form action="/logged/hotel" method="post" >
@{
var isfirst = true;
}
    @foreach (var item in ViewBag.companies)
    {
      if (isfirst) {
        isfirst = false;
        <input type="radio" name="graph" value="@item.Value" checked="checked" />@item.Text<br/>
      } else {
        <input type="radio" name="graph" value="@item.Value"/>@item.Text<br/>
      }
    }
    <input type="submit" value ="LOG IN" />
</form>

答案 3 :(得分:0)

/common.txt