2014-10-17 96 views
7

我有一个Textbox,类型为date。我正在尝试将textbox的默认值设置为当前日期。MVC Razor - 作为文本框类型日期的当前日期的默认值

@Html.TextBoxFor(x => x.Date, new { @id = "Date", @type = "date", 
            @value = DateTime.Now.ToShortDateString() }) 

上述行不设置默认值。如何设置当前日期的默认值?

+1

在将模型传递给视图之前,只需在模型中设置Date的值即可。 – 2014-10-17 04:56:41

回答

20

正如Stephen Muecke所说,您需要在模型上设置属性值。

// in controller method that returns the view. 
MyModel model = new MyModel(); 
model.Date = DateTime.Today; 

return View(model); 

而且你的剃须刀是:

@Html.TextBoxFor(x => x.Date, "{0:yyyy-MM-dd}", new { @class = "form-control", @type = "date"}) 

注意使用For方法时idname属性应该被自动分配属性名称,如@Html.TextBoxFor(),所以你不” t需要明确设置id属性。

+1

我怀疑OP可能不希望财产'日期'是'字符串'。相反,将属性设置为DateTime.Now或DateTime.Today并使用@ Html.TextBoxFor(m => m.Date,“{0:dd-MM-yyyy}”,new {@class =“如果你想渲染浏览器的日期选择器(在这种情况下格式必须是'yyyy-MM-dd') – 2014-10-17 05:23:50

+0

谢谢@StephenMuecke我确实希望它在'日期'格式...我用'{0:yyyy-MM-dd}'&然后只有它工作..因为HTML5输入日期期望RFC3339格式的日期....! – Anup 2014-10-17 06:20:30

+0

@Anup,请注意IE浏览器在使用它的时候有一些问题值得所有浏览器测试。 – 2014-10-17 06:36:47

19

这是更好的方式在视图来管理

@Html.TextBoxFor(x=> x.Date, new { @Value = @DateTime.Now.ToShortDateString() }) 
+0

欢迎来到StackOverflow。感谢您的回答。最好是按照您所看到的方式对代码进行格式化,以便于阅读。 – GreenAsJade 2014-10-17 05:30:12

+0

适合我需要的作品 – Scanner 2016-01-26 11:56:07

+1

这应该是公认的答案。直接点,更容易实施。 – CyberNinja 2017-06-26 13:19:44

0

另一种解决方案:

@Html.TextBoxFor(model=>model.CreatedOn, new{@value= System.DateTime.Now}) 

它工作在我的结束,相信它会在你的工作。

0
$(document).ready(function() { 
     var dateNewFormat, onlyDate, today = new Date(); 

     dateNewFormat = today.getFullYear() + '-'; 
     if (today.getMonth().length == 2) { 

      dateNewFormat += (today.getMonth() + 1); 
     } 
     else { 
      dateNewFormat += '0' + (today.getMonth() + 1); 
     } 

     onlyDate = today.getDate(); 
     if (onlyDate.toString().length == 2) { 

      dateNewFormat += "-" + onlyDate; 
     } 
     else { 
      dateNewFormat += '-0' + onlyDate; 
     } 

     $('#mydate').val(dateNewFormat); 
    });