2010-04-08 1 views
36

Как я могу установить RadioButtonFor() в качестве Проверил По умолчаниюКак установить RadioButtonFor() в ASP.NET MVC 2, как Проверено по умолчанию

<%=Html.RadioButtonFor(m => m.Gender,"Male")%> 

есть выход для (Html.RadioButton), но не для (Html.RadioButtonFor)

любые идеи?

+0

Нет ли опция для По умолчанию Check при использовании RadioButtonFor() – coolguy97

ответ

10

This question on StackOverflow имеет дело с RadioButtonListFor, и ответ также направляет ваш вопрос. Вы можете установить выбранное свойство в RadioButtonListViewModel.

14

Предполагаю, что у вас должна быть группа переключателей. что-то может быть как

<%=Html.RadioButtonFor(m => m.Gender,"Male")%> 
<%=Html.RadioButtonFor(m => m.Gender,"Female")%> 
<%=Html.RadioButtonFor(m => m.Gender,"Unknown")%> 

Вы можете дать значение по умолчанию для m.Gender = «Unknown» (или что-то) от контроллера.

+0

Но я хочу только два радиокнопку с одним из них проверяется bydefault с помощью Html.RadiobuttonFor() – coolguy97

+4

я боролся с этим, как хорошо, но нашел этот ответ так просто. Если вы создадите свойство на своей модели, скажем, «Пол» в конструкторе по умолчанию вашей модели, просто установите это свойство в пол по умолчанию, например «Gender =« Male »;'. Если вы это сделаете, mvc.net автоматически выберет значение по умолчанию, а при обратном вызове автоматически привяжет выбранное значение к свойству Gender. – farcrats

0

Если вы используете jquery, вы можете позвонить это прямо перед вашими переключателями.

$('input:radio:first').attr('checked', true); 

^Это будет проверять первый ящик радио, но вы можете посмотреть на еще JQuery, чтобы перебрать на тот, который вы хотите выбрать.

12

Это не слишком красиво, но если у вас есть только реализовать очень мало радиокнопки для всего сайта, то, как это может быть вариант:

<%=Html.RadioButtonFor(m => m.Gender,"Male",Model.Gender=="Male" ? new { @checked = "checked" } : null)%>

+0

Спасибо, Это работает отлично –

68

Используйте простой способ:

<%= Html.RadioButtonFor(m => m.Gender, "Male", new { Checked = "checked" })%> 
+17

Спасибо! Также может быть 'new {@checked =" checked "}'. – Cymen

+0

Это не будет работать с проверкой postbacks –

5

Это Helper вычисляет выражение и, если равно значению он проверяет переключатель, и имеет те же параметры, чем RadioButtonFor (по этой причине название Diferent):

public static MvcHtmlString CheckedRadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object value) 
{ 
    return CheckedRadioButtonFor(htmlHelper, expression, value, null); 
} 

public static MvcHtmlString CheckedRadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object value, object htmlAttributes) 
{ 
    var func = expression.Compile(); 
    var attributes = new RouteValueDictionary(htmlAttributes); 
    if ((object)func(htmlHelper.ViewData.Model) == value) { 
     attributes["checked"] = "checked"; 
    } 
    return htmlHelper.RadioButtonFor(expression, value, attributes); 
} 

Использование:

<%= Html.CheckedRadioButtonFor(m => m.Gender, "Male", new { id = "gender-male" })%> 

Результат:

<!-- For Model.Gender = "Male" --> 
<input checked="checked" id="gender-male" name="Gender" type="radio" value="Male"> 
<!-- For Model.Gender = "Female" --> 
<input id="gender-male" name="Gender" type="radio" value="Male"> 
2

Вы также можете добавить ярлыки, которые привязаны к кнопкам радио с тем же ID, который затем позволяет пользователю нажать на радио кнопку или метку, чтобы выбрать этот элемент. Я использую константы здесь для «Мужской», «Женский» и «Неизвестный», но, очевидно, это могут быть строки в вашей модели.

<%: Html.RadioButtonFor(m => m.Gender, "Male", 
    new Dictionary<string, object> { { "checked", "checked" }, { "id", "Male" } }) %> 
<%: Html.Label("Male") %> 

<%: Html.RadioButtonFor(m => m.Gender, "Female", 
    new Dictionary<string, object> { { "id", "Female" } }) %> 
<%: Html.Label("Female")%> 

<%: Html.RadioButtonFor(m => m.Gender, "Unknown", 
    new Dictionary<string, object> { { "id", "Unknown" } }) %> 
<%: Html.Label("Unknown")%> 
+1

Спасибо! возникла проблема с созданием метки для флажка. Совершенно очевидно, но не мог понять! – mateuscb

1
<%: Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = true })%> 

или

@checked = checked 

, если Вам нравится

3

я нашел другой вариант, так что вы можете просто использовать @Html.EditorFor() с шаблонами:

сказать, что я это перечисление:

public enum EmailType { Pdf, Html } 

я могу поместить этот код в Просмотров/Shared/EditorTemplates/EmailType.cshtml

@model EmailType 
@{ 
    var htmlOptions = Model == EmailType.Html ? new { @checked = "checked" } : null; 
    var pdfOptions = Model == EmailType.Pdf ? new { @checked = "checked" } : null; 
} 

@Html.RadioButtonFor(x => x, EmailType.Html, htmlOptions) @EmailType.Html.ToString() 
@Html.RadioButtonFor(x => x, EmailType.Pdf, pdfOptions) @EmailType.Pdf.ToString() 

Теперь я может просто использовать это, если я хочу использовать его в любое время:

@Html.EditorFor(x => x.EmailType) 

Это гораздо более универсальный этот способ, и мне легче меняться.

0
  @Html.RadioButton("Insured.GenderType", 1, (Model.Insured.GenderType == 1)) 
      @Web.Mvc.Claims.Resources.PartyResource.MaleLabel 
      @Html.RadioButton("Insured.GenderType", 2, Model.Insured.GenderType == 2) 
      @Web.Mvc.Claims.Resources.PartyResource.FemaleLabel 
0

Вот код, чтобы установить кнопки по умолчанию Рация истинной

@Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = "checked", id = "rdGender", name = "rbGender" }) 
0

Я считаю, что лучше просто поставить значение по умолчанию в конструкторе модели.

Gender = "Male"; 
-1

Вам нужно добавить 'проверил' htmlAttribute в RadioButtonFor, если значение RadioButton совпадает со значением Model.Gender.

@{ 
     foreach (var item in Model.GenderList) 
     { 
      <div class="btn-group" role="group"> 
       <label class="btn btn-default"> 
        @Html.RadioButtonFor(m => m.Gender, item.Key, (int)Model.Gender==item.Key ? new { @checked = "checked" } : null) 
        @item.Value 
       </label> 
      </div> 
     } 
    } 

Для полного кода см. Ниже ссылку: рендеринг группы переключателей бутстрапа с установленным по умолчанию. stackoverflow answer link

Смежные вопросы