【问题标题】:AspNet core MVC 1.1.3 Default selected radio buttonAspNet core MVC 1.1.3 默认选中单选按钮
【发布时间】:2017-06-07 14:14:29
【问题描述】:

我正在尝试默认选中一个单选按钮。

<div>@Html.RadioButtonFor(m => m.IsActive, "OofDeactive", new { @class = "isActive", @checked="checked"})</div>
<div>@Html.RadioButtonFor(m => m.IsActive, "OofActive", new { @class = "isActive" })</div>

注意模型包含一个属性

public bool IsActive { get; set; }

我在这里发现了同样的问题,但对于 MVC6 虽然它已关闭:https://github.com/aspnet/Mvc/issues/3098

这是一个问题还是我做错了什么?

【问题讨论】:

  • 您的代码似乎只是正确的。默认情况下应选中第一个。
  • 兄弟,我认为您的 IsActive 是错误的。这就是它不选择的原因。检查一次值是多少。
  • @BasantaMatia 我已经对其进行了服务器调试,以确保 isActive 正确进入。最终我会拥有它,以便 @@checked = model.isactive 在 isactive 为 true 时将其默认为检查。但我什至无法手动将其设置为默认值。
  • 什么是属性IsActive?听起来像bool。它的属性值决定了选择的内容。除非IsActivestring,并且当您将模型传递给视图时它的值是"OofDeactive",否则不会选择第一个按钮。
  • @StephenMuecke IsActive 是从控制器传递的布尔值。对于其他 javascript 功能,我已将单选按钮的值设置为字符串“OofDeactive”。我已经测试过这个值字段是否决定了默认的检查属性,它没有。

标签: asp.net-mvc razor asp.net-core-mvc


【解决方案1】:

RadioButtonFor()(与所有 HtmlHelper 方法一样)通过绑定到您的属性的值及其确定选中哪个单选按钮的值来工作。

您的IsActive 属性是一个bool,它只有两个可能的值,truefalse,并且不能绑定到值为“OofDeactive”或“OofActive”的string。把代码改成

@Html.RadioButtonFor(m => m.IsActive, true, new { @class = "isActive", id = "" })
@Html.RadioButtonFor(m => m.IsActive, false, new { @class = "isActive", id = "" })

如果属性IsActive 的值为true,将选择第一个单选按钮,否则将选择第二个。

请注意,RadioButtonFor() 方法会生成重复的id 属性,因此请使用new { id = "" } 删除id 属性(或者如果出于其他目的需要,给它们一个唯一的id)。设置checked 属性是没有意义的,因为它会被忽略。

【讨论】:

    【解决方案2】:

    你可以试试这个。

     @{
        var checked = Model.IsActive ? new {@checked = "checked"} : null;
    var checked1 = checked == null ? new {@checked = "checked"} : null;
        }
    
              <div>@Html.RadioButtonFor(m => m.IsActive, "OofDeactive", checked)</div>
                <div>@Html.RadioButtonFor(m => m.IsActive, "OofActive", checked1)</div>
    

    【讨论】:

    • 感谢您的回复,两个单选按钮都没有被选中。我已经检查了来源,并且输入标签没有选中的 html 属性。
    • 你可以试试这个&lt;div&gt;@Html.RadioButtonFor(m =&gt; m.IsActive, "OofDeactive", isChecked: true, new { @class = "isActive"})&lt;/div&gt;
    • 我收到一个错误,因为 RadioButtonFor 方法没有重载需要 4 个参数。
    • 你想如果 isActive 为真,那么应该检查当活动为假时不应该检查正确吗?
    • 是的,好吧,如果是真的,检查一个如果是假的,那么另一个是。
    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2017-10-02
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2018-04-21
    相关资源
    最近更新 更多