我创建了一个选定值的下拉列表,但是当我去保存它时,它会向模型返回一个空值。
我创建列表的代码
var startYearList = from r in Model.Facility.Reports.OrderByDescending(x => x.Year)
select new SelectListItem
{
Text = r.Year == null ? "0000" : r.Year.ToString(),
Value = r.Year == null ? "1/1/0001" : "1/1/" + r.Year.ToString(),
Selected = (r.Year == Convert.ToInt32((Model.StartDate != null ? Model.StartDate.Value.ToString("yyyy") : "0001")))
};
我填写下拉列表的代码。
<div>
<b>Mailing Address:</b><br />
<label>Address 1</label>
@Html.TextBoxFor(model => model.Address1)<br />
<label>Address 2</label>
@Html.TextBoxFor(model => model.Address2)<br />
<span class="dynLocation">@Html.TextBoxFor(model => model.Zipcode.Id)</span><br />
<br />
From @Html.DropDownListFor(model => model.StartDate.Value, startYearList)
to @Html.DropDownListFor(model => model.EndDate.Value, endYearList, "Current")
</div>
结束日期可以为空
答案 0 :(得分:0)
您将下拉列表绑定到Value
Nullable<DateTime>
属性@Html.DropDownListFor(m => m.StartDate, startYearList)
@Html.DropDownListFor(m => m.EndDate, endYearList, "Current")
属性,这是一个只读属性(refer documentation),并且在您回发时无法设置。相反,您需要绑定到属性
SelectList
旁注
ViewBag
,而不是
查看,并将其分配给(最好)视图模型属性或
Selected
财产SelectListItem
的{{1}}属性。您
绑定到模型属性及其属性的值
确定选择的是什么(Selected
的值
SelectListItem
只是被忽略了)<label>
元素是一个旨在实现的辅助功能元素
允许您将焦点设置为关联控件您的用法
label>Address 1</label>
不会将标签与
控制(你也可以使用<span>Address 1</span>
)。代替
使用@Html.LabelFor(m => m.Address1, "Address 1")
或添加
[Display(Name = "Address 1")]
属性属性和使用
@Html.LabelFor(m => m.Address1)
答案 1 :(得分:-1)
如果模型值可以为空,我发现使用Html.DropDownList效果更好。
您可能会发现生成的选择列表的名称是&#34; StartDate_Value&#34;因此与模型中的变量名称不对应。
@Html.DropDownList("StartDate", startYearList)