有没有办法在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>
答案 0 :(得分:1)
您试图在模型中使用两个不同的属性:
IsCorporate
IsAllStores
模型表明两者可以同时为true
或false
。您应该将它们分组到单个属性,因为一次只能选择一个属性。如果你要求两个单独的,你可以追加另一个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单选按钮组行为。