2014-10-17 99 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); 
    });