c# - 单选按钮始终选中项目显示 False
问题描述
我有一个 Razor 单选按钮,但总是选中的项目显示为 false。
代码
@using (Html.BeginForm("NewsSubmit", "Home", FormMethod.Post))
{
<div class="card-body pt-5 flex-center flex-column">
<form class="form-checkout form-style-1">
<div class="form-group text-center mt-3 shipping-group">
@Html.RadioButtonFor(x=>x.IsUseRegisteredAddress,true,new { @class = "custom-control-input", @checked = " " })
@Html.RadioButtonFor(x => x.IsUseRegisteredAddress, false, new { @class = "custom-control-input",@checked = " " })
</div>
</form>
</div>
}
控制器
Public ActionResult NewsSubmit(NewsTotal news)
{
return View();
}
DTO
public class NewsTotal()
{
public bool IsUseRegisteredAddress{get;set;}
}
解决方案
问题似乎来自您的 viewmodel 属性的声明,该属性定义为bool
,而且您在NewsTotal
通过 using收到时也没有从控制器设置它return View(news)
:
public bool IsUseRegisteredAddress { get; set; }
由于默认值为bool
未false
设置时,因此默认选中具有false
值的单选按钮。如果要true
用作默认值,则需要从返回带有 viewmodel 的视图的控制器操作中设置它:
[HttpPost]
public ActionResult NewsSubmit(NewsTotal news)
{
// set radio button state (optional, ignore this if it's already set in 'news' parameter)
news.IsUseRegisteredAddress = true;
// returning viewmodel is mandatory
return View(news);
}
或者,如果您想将所有单选按钮设置为默认未选中,请指定Nullable<bool>
viewmodel 属性:
public bool? IsUseRegisteredAddress { get; set; }
笔记:
1)您可能会考虑从中删除@checked
属性,RadioButtonFor
因为checked
它是布尔属性,它表示属性存在时的选中状态(并且在属性不存在时未选中),如下所示:
@Html.RadioButtonFor(x => x.IsUseRegisteredAddress, true, new { @class = "custom-control-input" }) Yes
@Html.RadioButtonFor(x => x.IsUseRegisteredAddress, false, new { @class = "custom-control-input" }) No
如果checked
属性存在于两个具有相同名称或组的单选按钮中,checked
则默认情况下,具有属性的最后一个单选按钮将设置为选中。
2) 第二种形式<form class="form-checkout form-style-1">
无效,因为它会创建嵌套形式。删除Html.BeginForm
助手中的附加表单标签并设置主表单的样式:
@using (Html.BeginForm("NewsSubmit", "Home", FormMethod.Post, new { @class = "form-checkout form-style-1" }))
{
// form contents
}
推荐阅读
- ruby-on-rails - Rails 5 模型自定义验证与关系有很多
- assembly - 就 64 位除法而言,是否可以在不分支的情况下执行 128 位/64 位除法?
- flutter - 颤动中的自定义颜色背景
- swift - 无法在 CoreData swift 中保存数据
- bash - 如何重新授权 OAuth 应用程序“Git Credential Manager”
- r - 使用条件过滤行
- node.js - Unable to send email through nodemailer
- sas - load and combine all SAS dataset
- uwp - Is it possible to use “Google Sign in” in Xamarin.iOS and UWP apps?
- html - Angular - Remove the CSS :hover behavior for mat-tab that is disabled