Доступ к значению переключателя IEnumerable mvc2 - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть переключатель Да / Нет, и мне нужно получить доступ к значению в другой форме aspx. Я не знаю, правильно ли я это делаю или нет?

Основная модель представления

[UIHint("YesNoEditorTemplate")]
[DisplayName("Are you registered as blind (severely sight impaired)?")]
public IEnumerable<RadioButtonViewModel> RegBlind { get; set; }

Переключатель режима просмотра модели

public class RadioButtonViewModel
{
    public string ID { get; set; }
    public string Name { get; set; }
    public int Value { get; set; }
    public string Text { get; set; }
}

Контроллер

List<RadioButtonViewModel> regBlindList = new List<RadioButtonViewModel>();
regBlindList.Add(CreateRadioButton("RegBlind", 1, "Yes"));
regBlindList.Add(CreateRadioButton("RegBlind", 0, "No"));
badgeViewModel.RegBlind = regBlindList;

Шаблон редактора

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Tameside.Internal.ViewModels.BlueBadge.RadioButtonViewModel>>"%><%
foreach (var model in Model)
{%>
    <tr>    
        <td><%=String.Format("<input type=\"radio\" id=\"{0}\" name=\"{1}\" value=\"{2}\" />", model.ID, model.Name,model.Value)%></td>
        <td><%=String.Format("<label for=\"{0}\">{1}</label>", model.ID, model.Text)%></td>
    </tr><%
}%>

Страница ASPX

<%=Html.EditorFor(x => x.RegBlind)%>

Вот как я получаю информацию

if (Model.RegBlind.First().Value == 0)

Это правильно?

Заранее спасибо за любую помощь.

Clare

1 Ответ

2 голосов
/ 14 декабря 2011

Я думаю, проблема в том, что перечислимое никогда не сохранит выбранное значение, оно просто теряется до некоторой степени.

Таким образом, вам нужно две части, одна для хранения значения, а другая для хранения переключателей.Вы хотите отобразить.

[DisplayName("Are you registered as blind (severely sight impaired)?")]
public int RegBlind { get; set; }

public IEnumerable<RadioButtonViewModel> RegBlindOptions { get; set; }

После того, как вы это отсортировали, вы сможете использовать ваш EditorTemplate как частичное представление (хотя это, вероятно, означало бы перемещение его из каталога EditorTemplates ив соответствующую папку Views или общую папку).

<% Html.RenderPartial("YesNoEditorTemplate", Model.RegBlindOptions)%>

Это должно работать или быть близко.Если нет, взгляните на сгенерированный HTML и проверьте, все ли в порядке, а затем обратите внимание на то, что отправляется обратно в заголовках POST:)

...