如何在同一个 RadioButtonFor() 列表中使用多个模型参数
本文关键字:参数 模型 列表 同一个 RadioButtonFor | 更新日期: 2023-09-27 18:31:44
有没有办法在不破坏 Razor 在提交时用于获取唯一字段的名称字段的情况下在 html 上的同一单选按钮组中使用许多模型属性?
我尝试了以下方法:
<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>
您正在尝试在模型中利用两个不同的属性:
-
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>
然后,您可以简单地打开jQuery document.load
触发更改以选择正确的值。
另一种选择是,如果您像我提到的那样过渡到单个值,则可以遵循此堆栈溢出答案。
经过研究,Razor 需要单选按钮的名称才能成功回发,但单选按钮本身需要相同的名称才能成功链接。
目前没有使用 Razor 语法解决此问题的方法,最好的替代方案是使用带有 if() 语句的复选框关闭所有其他复选框
此问题已通过创建自定义 jquery 验证得到解决,如果其他 3 个复选框中的任何一个处于打开状态,则取消选中其余复选框。
单选按钮组的基本 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构建伪单选按钮组行为。