如何在ASp.net MVC 2中将RadioButtonFor()设置为默认选中

时间:2010-04-08 09:07:10

标签: asp.net-mvc-2 radiobuttonfor

如何将RadioButtonFor()设置为默认选中

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

(Html.RadioButton)有出路但不适用于(Html.RadioButtonFor)

任何想法?

14 个答案:

答案 0 :(得分:77)

使用简单的方法:

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

答案 1 :(得分:15)

它不是太漂亮,但是如果你只需要为整个网站实现很少的单选按钮,这样的东西也可能是一个选项:

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

答案 2 :(得分:14)

我假设您应该有一组单选按钮。某事可能就像

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

您可以从控制器中为m.Gender =“Unknown”(或其他)指定默认值。

答案 3 :(得分:10)

This question on StackOverflow处理RadioButtonListFor,答案也解决了你的问题。您可以在RadioButtonListViewModel中设置selected属性。

答案 4 :(得分:8)

此Helper计算表达式,如果等于它检查单选按钮的值,并且具有与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">

答案 5 :(得分:3)

我找到了另一个选项,所以你可以使用 @ 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)

这种方式更加普遍,我觉得更容易改变。

答案 6 :(得分: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")%>

答案 7 :(得分:1)

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

@checked = checked

如果你喜欢

答案 8 :(得分:0)

如果你正在使用jquery,你可以在你的单选按钮之前调用它。

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

^这将检查第一个单选框,但您可以查看更多jquery循环到您想要选择的那个。

答案 9 :(得分: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

答案 10 :(得分:0)

以下是将默认单选按钮设置为true的代码

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

答案 11 :(得分:0)

我发现最好只将默认值放在模型的构造函数方法中。

Gender = "Male";

答案 12 :(得分:0)

对此表示怀疑,我想指出的是,对于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")
}

第一个单选按钮(“一个”)的状态将被设置为活动状态,因为该值与模型中设置的值匹配。

答案 13 :(得分:-1)

如果radiobutton的值与Model.Gender值匹配,则需要在 RadioButtonFor 中添加'checked'htmlAttribute。

@{
        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