MVC3 RadioButtonFor - как правильно установить флажок = проверено - PullRequest
0 голосов
/ 11 октября 2011

Я пытаюсь получить HTML, похожий на следующий с MVC3 + Razor:

<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:

  1. В Razor я установил только check = "checked" на "r1", но по какой-то причине он также установил флажок check = "checked" на "r2". Почему?
  2. Я не пометил «UseExistingNumber» в моей модели как поле «Обязательный», но почему «r1» отображается с атрибутом «data-val-required»?

Примечание: я знаю, что могу писать html напрямую в Razor, и я также знаю, что могу написать свои собственные расширения для рендеринга нужного html. Я просто не могу поверить, что уже не могу использовать встроенный, наверняка я что-то упустил, верно?

Спасибо

1 Ответ

0 голосов
/ 11 октября 2011
  1. Вы получаете проверенный атрибут, потому что значение модели истинно.
  2. Требуемый флаг применяется, потому что неоплачиваемый bool подразумевает, что он обязателен.

Когда я делал это в прошлом, я использовал HTML.RadioButton вместо RadioButtonFor.обратите внимание, что «поле» - это то, чем вы являетесь.Обычно я помещаю это в шаблон редактора.

  • @ Html.RadioButton ("field", "True", new {id = (ViewData.TemplateInfo.GetFullHtmlFieldId ("field")+ "Да")}) Да
  • @ Html.RadioButton ("поле", "Ложь", новый {id = (ViewData.TemplateInfo.GetFullHtmlFieldId ("поле") + "Нет")}) Нет
@ Html.ValidationMessage ("")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...