Подтвердить что ты не робот

Как установить RadioButtonFor() в ASp.net MVC 2 как проверено по умолчанию

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

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

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

любые идеи?

4b9b3361

Ответ 1

fooobar.com/questions/76929/... касается RadioButtonListFor, и ответ также отвечает на ваш вопрос. Вы можете установить выбранное свойство в RadioButtonListViewModel.

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

Этот помощник оценивает выражение, и если он равен значению, которое он проверяет, и имеет те же параметры, что и 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">

Ответ 6

Я нашел еще один вариант, поэтому вы можете просто использовать @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)

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

Ответ 7

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

<%: 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")%>

Ответ 8

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

или

@checked = checked

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

Ответ 9

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

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

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

Ответ 10

           @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

Ответ 11

Вот код для установки переключателя по умолчанию: true

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

Ответ 12

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

Gender = "Male";

Ответ 13

Вам нужно добавить 'checked' 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>
        }
    }

Для полного кода см. ссылку ниже: для рендеринга группы переключателей бутстрапа с установленным по умолчанию. fooobar.com/info/153520/...