【问题标题】:Mvc razor radio button get default value from modelMvc razor 单选按钮从模型中获取默认值
【发布时间】:2017-03-02 05:04:05
【问题描述】:

我有一个Hotel 模型,并且模型中有一个HotelPrice 列表。

我想要做的是当用户显示酒店详细信息页面时显示酒店价格信息,它们也可以是可编辑的。我在HotelPrice 实例上有一个breakfastIncluded 属性,我必须将其显示为单选按钮。

这是我的代码:

<div>
@{
foreach(var hotelPrice in Model.HotelPrices)
{
    <label class="mt-radio-inline>
        @Html.RadioButtonFor(hotelModel => hotelPrice.breakfastIncluded, "1", new { @checked = (hotelPrice.Breakfast.ToString() == "1") })Yes
        <span></span>
    </label>
    <label class="mt-radio-inline>
        @Html.RadioButtonFor(hotelModel => hotelPrice.breakfastIncluded, "0", new { @checked = (hotelPrice.Breakfast.ToString() == "0") })No
        <span></span>
    </label>
}
}

当我显示我的页面时(我还不能编辑部分),所有breakfastIncluded 属性的单选按钮都显示为未分配,最后一个单选按钮显示错误(即它必须是“是”但看起来像“不”)。

但是,当我通过浏览器的检查工具进行检查时,所有单选按钮的选中属性都显示正确(即,如果应该是“是”,则单选按钮的选中为真,而“否”的选中为假)。

我是 html 新手,我不知道为什么会这样。你能帮助我吗?提前致谢。

【问题讨论】:

  • 您有多个问题 - 您不能使用 foreach 循环将控件绑定到集合(请参阅 this answer)。而且您没有设置checked 属性(RadioButtonFor() 会在您修复视图时正确执行此操作(并且checked="true"checked="false"checked="anything" 都是相同的-它们设置checked 状态但是因为只能检查一个,所以最后一个是(属性应该是bool,而不是int
  • MVC Razor 中的一个重要教训是在循环通过集合创建表单元素时不要使用foreach。始终使用例如for (var i = 0; i &lt; Model.HotelPrices.Count; i++) 然后@Html.RadioButtonFor(m =&gt; Model.HotelPrices[i], ... )。这是在提交表单时生成模型绑定可以使用的元素名称所必需的。
  • 感谢@StephenMuecke 和@PeterB。使用 for 而不是 foreach 会产生积极的变化(即现在至少出现了一些东西)。我将收音机的选中部分(只是为了看看)设置为“是”new { @checked = "true" },设置为“否”new { @checked = "false" }。现在所有值都显示为“否”,而它们必须显示为“是”。 @StephenMuecke 我不明白我应该如何更正检查的部分。我也无法理解你所说的“最后一个是(并且属性应该是 bool,而不是 int)”是什么意思。如果您能重新解释一下,我将不胜感激。
  • 你需要删除new { @checked = "..." }
  • 因为RadioButtonFor() 方法设置正确 - 它的属性值为1 第一个将被检查。如果是0,那么第二个将是 - 这就是模型绑定的工作方式 - 它绑定到您的属性的值

标签: html asp.net-mvc razor radio-button


【解决方案1】:

通过在 cmets 中应用解决方案。我使用了for 而不是foreach,看来我不应该设置checked 值,因为单选按钮有值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 2019-04-22
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多