输入值属性呈现两次

时间:2015-02-23 20:03:12

标签: html c#-4.0 asp.net-mvc-5

这是一个相当有趣的问题,很难发现......我无法解决它。简而言之,我在视图中有以下内容尝试渲染日期字段(忽略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" />

请注意,Valuevalue都存在。小写版本是TextBoxFor的一部分,大写Value是在视图中指定时在我的自定义属性中显示的内容。

但是,将视图中的自定义属性从大写更改为小写运行正常,但具有自定义日期格式。结果,我得到一个空白字段,因为webshim无法解释它。

无论如何都没有获得自定义日期格式;

  • 更改模型属性(服务器端验证所需)
  • 更改/修改jquery库

简而言之,有没有办法在呈现时将自定义格式化日期作为单个小写value html属性?

修改 下面标记的答案将小写value更改为指定的格式。为了满足原始请求,MVC标记也必须更改为小写value。这解决了这个问题。

EDIT2 重复标记无效。虽然情况非常接近,但链接帖子中的答案都没有在这种情况下起作用 - 本质上将其标记为不同。

0 个答案:

没有答案