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

MVC & RadioButtonList

Я попытался сделать это, но это только отображает радиообъект без текста рядом с ним.

<% foreach (string s in Html.RadioButtonList("rbl")) {%>
    <% =s %>
<% } %> 
4b9b3361

Ответ 1

Илия Манор написал о той же проблеме в ASP.NET MVC 1.0:

ASP.NET MVC Html.RadioButtonList Blues

Он решил пройти через свой DataSource и создать отдельные комбинации Html.RadioButton и Label.

<!-- After using and looking at the code for the Html.RadioButtonList in the ASP.NET MVC 1.0 RTM codebase, I'm not sure how it is supposed to be useful. It only outputs the actual input radio button and doesn't render any corresponding labels. To get around this I ended up writing a foreach creating individual Html.RadioButton and labels -->
<%
var radioButtonList = new SelectList(new List<ListItem> {
    new ListItem { Text = "Current", Value="false", Selected=true },
    new ListItem { Text = "Other", Value="true"}}, "Value", "Text", "false");
var htmlAttributes = new Dictionary<string, object> {
    { "class", "radioButtonList" },
    { "onclick", "if(eval(this.value)) { $('#tblDate').show('slow'); } else { $('#tblDate').hide('slow'); }" }
};
foreach (var radiobutton in radioButtonList) { %>
    <%=Html.RadioButton("rblDate", radiobutton.Value, radiobutton.Selected, htmlAttributes)%>
    <label><%=radiobutton.Text%></label>
<% } %>

Ответ 2

Раньше это было в превью, но оно было удалено.

Если вы не можете найти его в фьючерсах, попробуйте что-то вроде этого

<% foreach (Model model in Models))
   {
%><%= String.Format("<input type=\"radio\" value=\"{0}\" name=\"{1}\" id=\"{2}\"><label for=\"{2}\">{3}</label>",
        model.ID, "fieldName", model.modelID, model.Name)  %><br />
<% } %>

Ответ 3

Если бы это был я, я бы просто использовал ряд статических HTML-элементов. Я знаю, что некоторые считают, что делать такой возврат к дням ASP, но это упрощает ИМО и заканчивает тем, что делает более надежным и ожидаемым [так что я составил слово] GUI.

Ответ 4

@{
    var radioButtonList = new SelectList(new List<ListItem> {
    new ListItem { Text = "1", Value="true", Selected=true },
    new ListItem { Text = "2", Value="false"},
    new ListItem { Text = "3", Value="false"},
    new ListItem { Text = "4", Value="false"},

    }, "Value", "Text", "false");

    var htmlAttributes = new Dictionary<string, object> {
    { "class", "radioButtonList" },
    { "onclick", "if(eval(this.value)) { $('#tblDate').show('slow'); } else { $('#tblDate').hide('slow'); }" }
};    
            }

@foreach (var radiobutton in radioButtonList) { 

  @Html.RadioButtonFor(m => m.ContactDepartment,  @radiobutton.Text) @radiobutton.Text

    <br/>
}

Ответ 5

Посмотрите на хорошего помощника Даниэль Гидман, 14 июня 2012 года, здесь. Он создал приятного и идеального помощника для RadioButtonList в MVC.

Ответ 6

Посмотрите DLL MVC Futures, доступную в MVC source на codeplex. В нем есть расширение HtmlHelper для отображения списков RadioButton. Он может автоматически отображать SelectList в ViewData или вы можете передать его явно. Несколько перегрузок доступны для различных нужд.