2014-10-08 5 views
0

У меня есть переменная в моей модели типа Datetime, я пытаюсь отобразить ее в представлении с помощью html-помощника. Я сделал этоPass datetime from Controller to View

@Html.TextBoxFor(model => model.dated, new {required = "required", type="date" } 

но вход не принимает никакого значения

+0

Используйте одну из перегрузок DateTime.ToString() (например, DateTime.ToString (String, IFormatProvider)). Или, возможно, еще более уместно - отформатируйте дату до локализованной строки уже в контроллере и передайте ее в виде (через модель представления). –

+0

Попробуйте этот ответ http://stackoverflow.com/a/7026781/492258 –

+0

В исходном коде я вижу, что значение ввода задано как это значение = "09/12/2025 23:00:00", I знайте, что это должно быть как это значение = «2014-10-10». Я не знаю, как исправить i, я добавил значение «2014-10-10» в помощнике, но это не помогло. – AnotherGeek

ответ

0

Вот простой рабочий пример:

@model SimpleTest.Controllers.SimpleViewModel 

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
    <head> 
     <title>Simple Test</title> 
    </head> 
    <body> 
     <div> 
      @using (Html.BeginForm()) { 
       // Use whatever format string that suits your purposes: 
       @Html.TextBoxFor(model => model.Dated, "{0:d MMM yyyy}") 

       <input type="submit" value="Submit value"/> 
      } 
     </div> 
    </body> 
</html> 

И теперь код контроллера (только для проверки решения):

using System; 
using System.Web.Mvc; 

namespace SimpleTest.Controllers { 

    public class DateController : Controller { 

     public ActionResult Index(SimpleViewModel model) { 

      // First time you visit the page, there is no view data 
      // (model.Dated will be equal to DateTime.MinValue) so we set 
      // the date to "now". 
      // 
      // When you submit data through the form in the view and henceforth, 
      // the value of model.Dated will be resolved from view data, 
      // and we simply pass it back to the view again so that the result is 
      // visualized. 

      var date = model.Dated == DateTime.MinValue 
       ? DateTime.Now 
       : model.Dated; 

      return View(new SimpleViewModel { 
       Dated = date 
      }); 
     } 

    } 

    public class SimpleViewModel { 

     public DateTime Dated { get; set; } 

    } 

} 

Если вы попытаетесь отредактировать значение даты в текстовом поле, вы найдете t он правильно разрешен связующим устройством по умолчанию и передается действию в контроллере.

+0

Я не знал, что второй параметр html.textboxfor может использоваться для установки формата. Я решил проблему, не используя помощника, но ваше решение лучше. спасибо – AnotherGeek

Смежные вопросы