如何从Asp.Net MVC Razor将值设置为HTML5日期字段?

问题描述:

我发现了一个类似的问题here但这不适用于我的情况。请看下面的屏幕截图。在“编辑”窗体中呈现数据时,除高亮显示的日期字段外,所有数据均已正确设置为控件。当我检查这个元素时,我发现这个值在那里,但由于某种原因它没有在现场显示。如何从Asp.Net MVC Razor将值设置为HTML5日期字段?

这里是我用来设置值到这个日期字段的代码。我试过“yyyy-MM-dd” & “MM/dd/yyyy”格式但没有工作。

<td>Joining Date</td> 
<td> 
@{ 
    if(Model.JoiningDate != null) 
    { 
     <input id="txtJoiningDate" type="date" style="width: 100%;" value="@String.Format("{0:MM/dd/yyyy}",Model.JoiningDate.Value)" /> 
    } 
    else 
    { 
     <input id="txtJoiningDate" type="date" style="width: 100%;" /> 
    } 
} 
</td> 

enter image description here

编辑
enter image description here

为什么不是你只需要使用的HTML帮助,如下所示: -

@Html.TextBox("txtJoiningDate", Model.JoiningDate.Value ,"{0:yyyy-MM-dd}",new{ @style="width:100%", type="date" }) 
+0

我试着用'V'代替'v',但结果是一样的:( – 2014-08-29 05:24:12

+0

@VPVerma ...然后尝试我的第一个答案... – 2014-08-29 05:24:52

+0

如果我选择第一个选项,是否可能使用jquery获得这个控件的值(因为这个值可以被用户改变)?如果是,那我该怎么做?因为现在,我使用jquery获得这个值,例如$(“#txtJoiningDate”) .val();这是使用此控件的编号 – 2014-08-29 05:30:06

你确定你试过YYYY-MM-DD格式?看看这个fiddle,正常工作在Chrome

<input id="txtJoiningDate" type="date" style="width: 100%;" value="2010-12-25" /> -> works 

<input id="txtJoiningDate" type="date" style="width: 100%;" value="2010/12/25" /> -> will not work 
+0

是的。请在编辑部分查看第二张图片。即使在Chrome中,它也无法正常显示。 – 2014-08-29 05:22:40

+0

我假设你的浏览器版本是相当新的。我能想到的其他事情可能是其他插件/ JS正在干扰。演示是否适合你? – Mrchief 2014-08-29 05:40:52

+0

是的,演示工程,但不是我的解决方案:( – 2014-08-29 05:48:34

@Html.EditorFor(x => x.JoiningDate) 

也模型:

[DisplayName("Joining date")] 
    [DataType(DataType.Date)] 
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime? JoiningDate { get; set; } 

使用HTML帮助

@Html.TextBox("txtJoiningDate", Model.JoiningDate.Value ,"{0:MM/dd/yyyy}") 

在型号

[DataType(DataType.Date)] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")] 
public Nullable<System.DateTime> JoiningDate{ get; set; } 

这是我的作品

+0

你在哪里提到输入类型=“日期”? – 2015-04-15 09:57:45

对于Html5输入类型=“日期”字段,值必须以格式“yyyy-MM-dd”指定。一旦你以这种格式设置它,你会看到在屏幕上分配的值。