这是一个相当有趣的问题,很难发现......我无法解决它。简而言之,我在视图中有以下内容尝试渲染日期字段(忽略archiac语法 - 这是一个旧项目);
<%: Html.TextBoxFor(model => model.DateOfRenewal,
new {
type = "date",
placeholder = "DD/MM/YYYY",
Value = (Model.DateOfRenewal != null) ? Model.DateOfRenewal.Value.ToString("yyyy-MM-dd") : ""
})%>
现在在模型上,日期格式属性适当地设置为“dd / MM / yyyy”。我们在生成HTML时呈现“yyyy-MM-dd”,以便jquery库(webshim polyfiller)在开始针对该字段运行时正确地获取日期。我无法控制这个库,所以我坚持使用它,我只能控制MVC方面。
发生的事情是上面的字段在您检查时看起来没问题,但查看来源显示以下内容;
<input Value="2008-05-12" data-val="true" data-val-date="The field Renewal Date must be a date."
id="Ratings_DateOfRenewal"
name="Ratings.DateOfRenewal" placeholder="DD/MM/YYYY"
type="date"
value="12/05/2008 00:00:00" />
请注意,Value
和value
都存在。小写版本是TextBoxFor
的一部分,大写Value
是在视图中指定时在我的自定义属性中显示的内容。
但是,将视图中的自定义属性从大写更改为小写运行正常,但不具有自定义日期格式。结果,我得到一个空白字段,因为webshim无法解释它。
无论如何都没有获得自定义日期格式;
简而言之,有没有办法在呈现时将自定义格式化日期作为单个小写value
html属性?
修改
下面标记的答案将小写value
更改为指定的格式。为了满足原始请求,MVC标记也必须更改为小写value
。这解决了这个问题。
EDIT2 重复标记无效。虽然情况非常接近,但链接帖子中的答案都没有在这种情况下起作用 - 本质上将其标记为不同。