2014-04-24 5 views
0

У меня есть список объектов, каждый из которых имеет вложенные списки, каждый из которых имеет свойство даты. Мне нужно уметь выбирать одну из этих дат.Невозможно получить значение из @ Html.RadioButtonFor со сложными типами

Модель выглядит следующим образом

public class ViewModel 
{ 
    public IList<ParentClass> ParentClasses {get;set;} 
} 

public class ParentClass 
{ 
    public IList<DateSelector> DateSelectors {get;set;}  
    public DateTime SelectedDate {get;set;} 
} 

public class DateSelector 
{ 
    public DateTime Date {get;set;} 
} 

В представлении для выбора действия:

@using (Html.BeginForm()) 
{ 
    for(int i = 0; i < @Model.ParentClasses.Count; i++) 
    { 
     for(int j = 0; j < @Model.ParentClasses[i].DateSelectors.Count; j++) 
     { 
      @Html.RadioButtonFor(m => m.ParentClasses[i], 
       Model.ParentClasses[i].DateSelectors[j].Date, 
       new { @id = Model.ParentClasses[i].DateSelectors[j].Date.ToString("MMddyyyy") }) 

      @Model.ParentClasses[i].DateSelectors[j].Date.ToShortDateString() 

      <br/> 
     } 
     <button type="submit">Submit</button> 
    } 

} 

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

<form method="post" action="/Date/SelectDate"> 

    <input id="04272014" type="radio" value="4/27/2014 12:00:00 AM" name="ParentClasses[0]"></input> 

    4/27/2014    

    <br></br> 
    <input id="11012014" type="radio" value="11/1/2014 12:00:00 AM" name="ParentClasses[0]"></input> 

    11/1/2014    

    <br></br> 
    <button type="submit"> 

     Submit 

    </button> 

</form> 

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

Благодаря

ответ

1

Это было время, так как с помощью бритвы, но я считаю, ваша лямбда для Начального селектора собственности на Html.RadioButtonFor неправильно. Вы пытаетесь связать это управление значением самого экземпляра ParentClass, а не ParentClass.SelectedDate. Я считаю, что если вы смените:

@Html.RadioButtonFor(m => m.ParentClasses[i].SelectedDate, 
Model.ParentClasses[i].DateSelectors[j].Date, 
new { @id = Model.ParentClasses[i].DateSelectors[j].Date.ToString("MMddyyyy") }) 

Это может работать для вас, если он по-прежнему не работает пост обратно, и я буду видеть, о работе на образец.

+0

Спасибо, что было :) – crunchy

Смежные вопросы