Как установить RadioButtonFor() как проверено по умолчанию
<%=Html.RadioButtonFor(m => m.Gender,"Male")%>
есть выход для (Html.RadioButton), но не для (Html.RadioButtonFor)
любые идеи?
Как установить RadioButtonFor() как проверено по умолчанию
<%=Html.RadioButtonFor(m => m.Gender,"Male")%>
есть выход для (Html.RadioButton), но не для (Html.RadioButtonFor)
любые идеи?
fooobar.com/questions/76929/... касается RadioButtonListFor, и ответ также отвечает на ваш вопрос. Вы можете установить выбранное свойство в RadioButtonListViewModel.
Используйте простой способ:
<%= Html.RadioButtonFor(m => m.Gender, "Male", new { Checked = "checked" })%>
Я предполагаю, что у вас должна быть группа переключателей. что-то может быть как
<%=Html.RadioButtonFor(m => m.Gender,"Male")%>
<%=Html.RadioButtonFor(m => m.Gender,"Female")%>
<%=Html.RadioButtonFor(m => m.Gender,"Unknown")%>
Вы можете указать значение по умолчанию для m.Gender = "Неизвестно" (или что-то еще) с вашего контроллера.
Это не слишком красиво, но если вам нужно реализовать только очень мало переключателей для всего сайта, возможно, что-то вроде этого:
<%=Html.RadioButtonFor(m => m.Gender,"Male",Model.Gender=="Male" ? new { @checked = "checked" } : null)%>
Этот помощник оценивает выражение, и если он равен значению, которое он проверяет, и имеет те же параметры, что и 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">
Я нашел еще один вариант, поэтому вы можете просто использовать @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)
Это гораздо более универсальный этот способ, и мне легче меняться.
Вы также можете добавить метки, привязанные к вашим переключателям с тем же идентификатором, который затем позволяет пользователю щелкнуть переключатель или метку, чтобы выбрать этот элемент. Я использую константы здесь для "Мужской", "Женский" и "Неизвестный", но, очевидно, это могут быть строки в вашей модели.
<%: 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")%>
<%: Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = true } )%>
или
@checked = checked
если вам нравится
Если вы используете jquery, вы можете вызвать это прямо перед своими переключателями.
$('input:radio:first').attr('checked', true);
^ Это будет проверять первый радиоканал, но вы можете посмотреть больше jquery, чтобы перейти к тому, который вы хотите выбрать.
@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
Вот код для установки переключателя по умолчанию: true
@Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = "checked", id = "rdGender", name = "rbGender" })
Я считаю, что лучше всего поместить значение по умолчанию в метод конструктора модели.
Gender = "Male";
Вам нужно добавить '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/...