[C#] ASP.NET MVC 예 / 아니요 바운드 모델 MVC가있는 라디오 버튼

누구든지 예 / 아니요 라디오 버튼을 ASP.NET MVC에서 강력한 형식의 모델의 부울 속성에 바인딩하는 방법을 알고 있습니다.

모델

public class MyClass
{
     public bool Blah { get; set; }
}

전망

<%@  Page Title="blah"  Inherits="MyClass"%>
    <dd>
        <%= Html.RadioButton("blah", Model.blah) %> Yes
        <%= Html.RadioButton("blah", Model.blah) %> No
    </dd>

감사

해결책:

지시에 대해 Brian에게 감사하지만 그가 쓴 것과 반대였습니다. 따라서-

<%@  Page Title="blah"  Inherits="MyClass"%>
<dd>
    <%= Html.RadioButton("blah", !Model.blah) %> Yes
    <%= Html.RadioButton("blah", Model.blah) %> No
</dd>



답변

두 번째 매개 변수가 선택되었으므로! 부울이 false 일 때 no 값을 선택합니다.

<%= Html.RadioButton("blah", !Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No 


답변

MVC 3 및 ​​Razor를 사용하는 경우 다음을 사용할 수도 있습니다.

@Html.RadioButtonFor(model => model.blah, true) Yes
@Html.RadioButtonFor(model => model.blah, false) No


답변

다음은 fieldset내게 필요한 옵션을 사용 하고 첫 번째 단추를 기본값으로 지정 하는보다 완전한 예 입니다. 이 없으면 fieldset라디오 버튼의 전체 내용을 프로그래밍 방식으로 결정할 수 없습니다.

모델

public class MyModel
{
    public bool IsMarried { get; set; }
}

전망

<fieldset>
    <legend>Married</legend>

    @Html.RadioButtonFor(e => e.IsMarried, true, new { id = "married-true" })
    @Html.Label("married-true", "Yes")

    @Html.RadioButtonFor(e => e.IsMarried, false, new { id = "married-false" })
    @Html.Label("married-false", "No")
</fieldset>

@checked익명 객체에 인수를 추가하여 단일 선택 단추를 기본값으로 설정할 수 있습니다 .

new { id = "married-true", @checked = 'checked' }

당신은 대체하여 문자열로 결합 할 수 있습니다 truefalse문자열 값.


답변

Ben의 답변을 약간 벗어나서 레이블에 사용할 수 있도록 ID에 대한 속성을 추가했습니다.

<%: Html.Label("isBlahYes", "Yes")%><%= Html.RadioButtonFor(model => model.blah, true, new { @id = "isBlahYes" })%>
<%: Html.Label("isBlahNo", "No")%><%= Html.RadioButtonFor(model => model.blah, false, new { @id = "isBlahNo" })%>

이게 도움이 되길 바란다.


답변

일반 HTML을 사용하여 라디오 버튼 주위에 레이블 태그를 추가하면 ‘labelfor’문제도 해결됩니다.

<label><%= Html.RadioButton("blah", !Model.blah) %> Yes</label>
<label><%= Html.RadioButton("blah", Model.blah) %> No</label>

텍스트를 클릭하면 적절한 라디오 버튼이 선택됩니다.


답변

또는 MVC 2.0 :

<%= Html.RadioButtonFor(model => model.blah, true) %> Yes
<%= Html.RadioButtonFor(model => model.blah, false) %> No


답변

모자에 고리를 넣을 수 있다면 라디오 버튼 기능을 재사용하는 기존의 답변보다 더 깨끗한 방법이 있다고 생각합니다.

ViewModel에 다음 속성이 있다고 가정 해 봅시다 .

Public Class ViewModel
    <Display(Name:="Do you like Cats?")>
    Public Property LikesCats As Boolean
End Class

재사용 가능한 편집기 템플릿을 통해 해당 속성을 노출 할 수 있습니다 .

먼저 파일을 만듭니다 Views/Shared/EditorTemplates/YesNoRadio.vbhtml

그런 다음 YesNoRadio.vbhtml에 다음 코드를 추가하십시오 .

@ModelType Boolean?

<fieldset>
    <legend>
        @Html.LabelFor(Function(model) model)
    </legend>

    <label>
        @Html.RadioButtonFor(Function(model) model, True) Yes
    </label>
    <label>
        @Html.RadioButtonFor(Function(model) model, False) No
    </label>
</fieldset>

보기 에서 템플릿 이름을 수동으로 지정하여 속성의 편집기를 호출 할 수 있습니다 .

@Html.EditorFor(Function(model) model.LikesCats, "YesNoRadio")

장점 :

  • 코드 뒤에 문자열을 추가하는 대신 HTML 편집기에서 HTML을 작성하십시오.
  • DisplayName DataAnnotation 유지
  • 라벨을 클릭하여 라디오 버튼을 토글 할 수 있습니다
  • 양식 (1 행)으로 유지할 수있는 최소 코드입니다. 자르는 방식에 문제가있는 경우 템플릿으로 가져갑니다.