如何在同一个RadioButtonFor()列表中使用多个模型参数?

时间:2016-01-25 15:55:33

标签: c# asp.net-mvc razor

有没有办法在html上的同一个单选按钮组中使用许多模型属性而不破坏Name字段,Razor用它来获取提交时的唯一字段?

我尝试了以下内容:

<h2>Store or Corporate</h2>
        <div class="store-selection-buttons">
            <label>Corporate</label>
            @Html.RadioButtonFor(model => model.JobPostStatus.IsCorporate, "true")
            <label>All Stores</label>
            @Html.RadioButtonFor(model => model.JobPostStatus.IsAllStores, "true")
            <label>Select Stores</label>
            @Html.RadioButton("Store Selection", false, new { @id = "select-stores" })
            //This one does other selection work in jquery for individual stores (List<int>)
        </div>

3 个答案:

答案 0 :(得分:1)

您试图在模型中使用两个不同的属性:

  • IsCorporate
  • IsAllStores

模型表明两者可以同时为truefalse。您应该将它们分组到单个属性,因为一次只能选择一个属性。如果你要求两个单独的,你可以追加另一个hidden然后两个,但很明显你会打“如果两者都是真的怎么办?”哪一个应该保持选中状态。

你可以用几种方法做到这一点,最简单的方法是:

<input type="hidden" value='@Html.DisplayFor(business => model.IsBusiness)' />
<input type="radio" name="businessType" value="true">Corporate</input>
<input type="radio" name="businessType" value="false">Store</input>

然后你可以简单地让document.load上的jQuery触发更改以选择正确的值。

另一个选择是,如果您转换为我提到的单个值,您可以按照此Stack Overflow answer进行操作。

答案 1 :(得分:1)

在研究之后,Razor需要将单选按钮的名称成功地回发,但是单选按钮本身需要相同的名称才能成功链接。

目前没有使用Razor语法解决此问题的方法,最好的选择是使用if()语句关闭所有其他复选框的复选框

通过创建自定义jquery验证解决了此问题,如果其他3个复选框中的任何一个处于启用状态,则取消选中其余复选框。

答案 2 :(得分:0)

单选按钮组的basic HTML是,例如

  <input type="radio" name="gender" value="male"> Male<br>
  <input type="radio" name="gender" value="female"> Female<br>
  <input type="radio" name="gender" value="other"> Other
  • 我们需要名称相同,以便他们作为一个群体一起行动
  • 我们需要传递模型中的值,以便正确显示

你可以接近:

@Html.RadioButton("JobStatus", @Model.JobPostStatus.IsCorporate, new { @id = "JobPostStatus.IsCorporate" }) Corprate<br />
@Html.RadioButton("JobStatus", @Model.JobPostStatus.IsAllStores, new { @id = "JobPostStatus.IsAllStores" }) All<br />
@Html.RadioButton("JobStatus", "false") Select<br />

通过了这些要求,但您尝试将单个HTML构造(单选按钮组)绑定到多个模型属性。如果你打算发回这个问题,你会遇到问题,在这种情况下,你会更好地使用你的代码并用JavaScript构建psuedo单选按钮组行为。