【问题标题】:Confused by the HtmlHelper<TModel>.RadioButtonFor<TResult>(...) docs对 HtmlHelper<TModel>.RadioButtonFor<TResult>(...) 文档感到困惑
【发布时间】:2021-05-11 17:27:14
【问题描述】:

所以,我在HtmlHelper.RadioButtonFor(...) docs 阅读@Html.RadioButtonFor() 的实际文档,它说“如果值与在以下位置找到的第一个非空值匹配,则向元素添加一个“已检查”属性: htmlAttributes 字典条目,键为“checked”,或 ModelState 条目的全名。"

基本上,我似乎需要有人向我解释那句话,因为我正在尽我所能地遵循它,并且永远不会呈现“检查”!

现在,在正确的条件下,这个助手被调用,如果我没记错的话,“值”是从Model.IDProofingQuestions[i].PossibleAnswers[paIdx].SelectedAnswer 设置的,并且该值也被指定为我的htmlAttributes 中的@checked 条目,然而,我的标记中没有checked

    @Html.RadioButtonFor(
        model => model.IDProofingQuestions[i].SelectedAnswerId,
        Model.IDProofingQuestions[i].PossibleAnswers[paIdx].SelectedAnswer,
        new
        {
            @class = "radio radio-button",
            @checked = Model.IDProofingQuestions[i].PossibleAnswers[paIdx].SelectedAnswer,
            @onclick = "updateBoolean( " +
                selectedAnswerId + ", " + selectedAnswerIdId + ", " +
                Model.IDProofingQuestions[i].PossibleAnswers[paIdx].PaId + " )"
        })

这是渲染的元素。

<input class="radio radio-button"
  id="IDProofingQuestions_0__SelectedAnswerId" name="IDProofingQuestions[0].SelectedAnswerId" 
  onclick="updateBoolean( 'IDProofingQuestions_0__PossibleAnswers_1__SelectedAnswer', 'IDProofingQuestions_0__SelectedAnswerId', 2 )" type="radio" value="True">

我认为这应该是您需要的所有信息,亲爱的读者,但如果我提供的信息不够多,请告诉我,我会添加任何可能需要的信息。

【问题讨论】:

    标签: asp.net-core .net-5


    【解决方案1】:

    该值也被指定为我的 htmlAttributes 中的 @checked 条目,但是,我的标记中没有检查!

    这是一个known github issue。您提供了一个 expression 和一个 value 来比较它。该比较总是覆盖来自htmlAttributeschecked 值。其他 htmlAttributes 值在生成的 HTML 中可见。

    也就是说,只有model.IDProofingQuestions[i].SelectedAnswerId的值等于等于Model.IDProofingQuestions[i].PossibleAnswers[paIdx].SelectedAnswer的值,checked才能工作。

    【讨论】:

    • 您知道如何做到这一点吗?我的意思是在嵌套的 for 循环中使用 RadioButtonFor 来显示已经选择的单选按钮?
    • 我想你可能没有仔细阅读我的回答。在后端代码中获取model.IDProofingQuestions[i].SelectedAnswerIdModel.IDProofingQuestions[i].PossibleAnswers[paIdx].SelectedAnswer 的值,然后返回它们(return View(model))。如果它们具有相同的值,则将选中单选按钮。如果它们具有不同的值,则单选按钮将被取消选中。
    • 好吧,不幸的是,这是两种不同的类型。 int & bool 我最终放弃了标签助手,自己编写了idnames,终于让它工作了。
    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多