MVC3 RadioButtonFor - 如何正确设置checked =“checked”

时间:2011-10-11 01:25:38

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

我正在尝试实现与MVC3 + Razor类似的html:

<input id="x1" type="radio" value="true" name="UseExistingNumberX" checked="checked"/>
<input id="x2" type="radio" value="false" name="UseExistingNumberX"  />

出于某种原因,我无法让它发挥作用。当我尝试跟随时:

@Html.RadioButtonFor(Function(m) m.UseExistingNumber, "true", New With {.id = "r1", .checked = "checked"}) Use Existing Service
@Html.RadioButtonFor(Function(m) m.UseExistingNumber, "false", New With {.id = "r2"}) Add New Service

我得到这个html输出:

<input type="radio" value="true" name="UseExistingNumber" id="r1" data-val-required="The UseExistingNumber field is required." data-val="true" checked="checked"> Use Existing Service
<input type="radio" value="false" name="UseExistingNumber" id="r2" checked="checked"> Add New Service

这是我的模特:

Public Class SelectiveServiceStep1Model


    <Required(ErrorMessage:="Postcode is required.")> _
    <RegularExpression("^\d*[0-9]$", ErrorMessage:="Your Postcode must contain only digits.")> _
    Public Property Postcode As String

    Public Property UseExistingNumber As Boolean

End Class

如果您发现生成的html存在2个问题:

  1. 我只在Razor中将checked =“checked”设置为“r1”,但由于某种原因,它还将checked =“checked”设置为“r2”。为什么?
  2. 我没有在我的模型中将“UseExistingNumber”标记为“必需”字段,但为什么“r1”使用“data-val-required”属性进行渲染?
  3. 注意:我知道我可以直接在Razor中编写html,而且我也知道我可以编写自己的扩展来呈现我想要的html。我只是不敢相信我已经不能使用内置的了,我肯定错过了一些正确的东西吗?

    谢谢

1 个答案:

答案 0 :(得分:0)

  1. 您将获得checked属性,因为模型的值为true。
  2. 正在应用所需的标志,因为不可计费的布尔意味着它是强制性的。
  3. 当我过去这样做时,我使用了HTML.RadioButton而不是RadioButtonFor。请注意,“field”是你所在的任何领域。我通常会把它放在编辑器模板中。

        

          
    •     @ Html.RadioButton(“field”,“True”,new {id =(ViewData.TemplateInfo.GetFullHtmlFieldId(“field”)+“Yes”)})          是          
    •     
    •     @ Html.RadioButton(“field”,“False”,new {id =(ViewData.TemplateInfo.GetFullHtmlFieldId(“field”)+“No”)})          没有          
    •     
        @ Html.ValidationMessage( “”)