2014-10-17 17 views
7

Mam Textbox z typem jako date. Próbuję ustawić domyślną wartość textbox na bieżącą datę.Brzytwa MVC - wartość domyślna jako bieżąca data dla daty typu pola tekstowego

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

Powyższa linia nie ustawia wartości domyślnej. Jak ustawić domyślną wartość jako aktualną datę?

+1

Wystarczy ustawić wartość 'Date' w modelu przed przekazaniem go do widoku. –

Odpowiedz

20

Jak powiedział Stephen Muecke, należy ustawić wartość właściwości na modelu.

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

return View(model); 

A maszynki byłoby:

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

Uwaga że id i właściwości name powinny być automatycznie przypisany do nazwy właściwości przy zastosowaniu metody For, takich jak @Html.TextBoxFor(), więc don” t należy jawnie ustawić atrybut id.

+1

Podejrzewam, że OP nie może chcieć, aby właściwość 'Date' była łańcuchem' string'. Zamiast tego ustaw właściwość na "DateTime.Now' lub" DateTime.Today "i użyj' @ Html.TextBoxFor (m => m.Date, "{0: dd-MM-yyyy}", new {@class = " form-control "})' Ustaw tylko '@type =" date "' jeśli chcesz wyrenderować datepicker przeglądarki (w takim przypadku format musi być w formacie 'rrrr-MM-dd') –

+0

Dzięki @StephenMuecke chciałem go w Format 'Date' ... Użyłem' {0: rrrr-MM-dd} 'i wtedy tylko zadziałało..na danych wejściowych HTML5 oczekuje daty w formacie RFC3339 ....! – Anup

+0

@Anup, należy pamiętać, że IE ma pewne problemy z używaniem tego tak wartego testowania we wszystkich przeglądarkach. –

19

To lepszy sposób zarządzać w świetle

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

Witamy w StackOverflow. Dzięki za odpowiedź. Najlepiej sformatować kod, tak jak widzisz, dla ułatwienia czytania. – GreenAsJade

+0

Działa idealnie na to, czego potrzebuję. – Scanner

+1

To powinna być zaakceptowana odpowiedź. prosto do rzeczy i łatwiejsze do wdrożenia. – CyberNinja

0

inne rozwiązanie:

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

To działa na moim końcu, na pewno będzie działać na Ciebie.

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); 
    });