我有一个对象列表,每个对象都有嵌套列表,每个列表都有一个日期属性。 我需要能够选择其中一个日期。
模型看起来像这样
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>
我非常感谢这里的任何见解,我已经在这个项目上落后了几天。
由于
答案 0 :(得分:1)
使用Razor已经有一段时间了,但我相信你在Html.RadioButtonFor上的属性选择器的初始lambda是错误的。您正在尝试将该控件绑定到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") })
这对你来说可能有用,如果它仍然无法发布回来,我会看到如何处理样本。