web-dev-qa-db-ja.com

ASp.net MVC 2でRadioButtonFor()をデフォルトでチェック済みに設定する方法

デフォルトでチェック済みとしてRadioButtonFor()を設定する方法

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

(Html.RadioButton)には抜け道があるが、(Html.RadioButtonFor)には抜け道がない

何か案は?

42
coolguy97

StackOverflowのこの質問 はRadioButtonListForを扱い、回答もあなたの質問に対応します。 RadioButtonListViewModelで選択したプロパティを設定できます。

10
Mac

簡単な方法を使用します。

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

あまりきれいではありませんが、サイト全体にごく少数のラジオボタンのみを実装する必要がある場合は、次のようなオプションもあります。

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

15
Adrian Grigore

ラジオボタンのグループが必要だと思います。何かが

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

コントローラからm.Gender = "Unknown"(または何か)のデフォルト値を指定できます。

14
Allen Wang

このヘルパーは式を評価し、値と等しい場合はラジオボタンをチェックし、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">
8
Alex LE

別のオプションを見つけたので、テンプレートで@ 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)

この方法ははるかに普遍的であり、変更しやすいと感じています。

3
naspinski

同じ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")%>
2
nekno
<%: Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = true } )%>

または

@checked = checked

もし良かったら

1
Markus Sjöholm

これに出くわし、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")
}

値がモデルで設定されたものと一致するため、最初のラジオボタン(「One」)の状態はアクティブとして設定されます。

1
Jon Ryan

デフォルトのラジオボタンをtrueに設定するコードは次のとおりです

@Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = "checked", id = "rdGender", name = "rbGender" })
0
Anjan Kant
           @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
Kuttan Sujith

モデルのコンストラクターメソッドに既定値を配置するのが最善の方法です。

Gender = "Male";
0
dko

Jqueryを使用している場合は、ラジオボタンの直前でこれを呼び出すことができます。

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

^これにより、最初のラジオボックスがチェックされますが、より多くのjqueryを見て、選択したいものに切り替えることができます。

0
rrp6119