누구든지 예 / 아니요 라디오 버튼을 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' }
당신은 대체하여 문자열로 결합 할 수 있습니다 true
및 false
문자열 값.
답변
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 행)으로 유지할 수있는 최소 코드입니다. 자르는 방식에 문제가있는 경우 템플릿으로 가져갑니다.