Как установить RadioButtonFor () в ASp.net MVC 2 как отмечено по умолчанию - PullRequest
41 голосов
/ 08 апреля 2010

Как я могу установить RadioButtonFor () как отмеченный по умолчанию

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

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

любых идей?

Ответы [ 14 ]

77 голосов
/ 27 августа 2010

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

<%= Html.RadioButtonFor(m => m.Gender, "Male", new { Checked = "checked" })%>
15 голосов
/ 24 августа 2010

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

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

14 голосов
/ 09 апреля 2010

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

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

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

10 голосов
/ 12 апреля 2010

Этот вопрос на StackOverflow касается RadioButtonListFor, и ответ также отвечает на ваш вопрос. Вы можете установить выбранное свойство в RadioButtonListViewModel.

8 голосов
/ 24 сентября 2010

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

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">
3 голосов
/ 03 июня 2011

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

Скажите, у меня есть это перечисление:

public enum EmailType { Pdf, Html }

Я могупоместите этот код в Views / 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)

Так гораздо универсальнее и легче меняются.

2 голосов
/ 04 октября 2010

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

<%: 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 голос
/ 14 октября 2010
<%: Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = true } )%>

или

@checked = checked

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

0 голосов
/ 01 апреля 2019

Наткнулся на это и подумал, что я хотел бы указать, что для MVC 5 все, что вам нужно сделать, это установить значение для модели.Например:

Модель:

   public class ExampleModel
    {
        public PackingListInputModel()
        {

             RadioButtonField = "One";

        }
        public string RadioButtonField { get; set; }
    }

Вид:

@model ExampleModel

@using (Html.BeginForm)
{
    @Html.RadioButtonFor(m => m.RadioButtonField , "One")
    @Html.RadioButtonFor(m => m.RadioButtonField , "Two")
}

Состояние первого переключателя («Один») будет установлено как активное, так какзначение соответствует тому, что было установлено в модели.

0 голосов
/ 26 октября 2016

Вам необходимо добавить проверенный атрибут htmlAttribute в RadioButtonFor , если значение радиокнопки совпадает со значением 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

...