2010-10-22 53 views
3

我遇到了禁用绑定到文本框的日期时间恼人的绑定行为。它总是返回null。ASP.NET MVC 2:禁用TextBox for DateTime返回null

我的模特儿有DateTime? StartDate属性...我也试过只是DateTime StartDate(没有'?')。

我已尝试以下步骤:

尝试#1:

<%: Html.TextBoxFor(model => model.StartDate, new { @disabled="true" })%> 

尝试#2:

<%: Html.EditorFor(model => model.StartDate, "DateDisabled")%> 

其中DateDisabled是这样定义的局部视图:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %> 
<%: Html.TextBox("", Model.HasValue ? Model.Value.ToShortDateString() : "", new { @class = "text-box-short-disabled", @disabled = "true" })%> 

全部我的尝试返回一个空值。有什么我错过了吗?还是解决方法?

回答

10

具有disabled属性的输入元素在提交表单时从不将它们的值发送到服务器。您应该使用readonly属性改为:

<%: Html.TextBoxFor(model => model.StartDate, new { @readonly = "readonly" }) %> 
+0

对我来说,我使用它产生一个select元素,并有对这种元素的无只读属性的DropDownListFor。我想我必须在这种情况下处理空值。感谢您指出禁用的属性行为,我想象并在此确认。 – kzfabi 2013-06-24 20:48:14