asp mvc EditorFor DateTime无法显示

Joh*_*rds 14 asp.net-mvc razor

我试图在我的剃刀文件中显示从数据库检索到的日期时间字段,其中包含以下内容:

 @Html.EditorFor(model => model.RequestDate);
Run Code Online (Sandbox Code Playgroud)

我100%确定地知道RequestDate不为null,因为我检查了视图中传递的模型,它是数据库中的日期.但是,日期时间文本框仍显示"mm/dd/yyyy".我不知道为什么它不显示日期.有任何想法吗?谢谢.

这是我的模型:

      [Display(Name = "Time")]
    [DataType(DataType.Date)]
    public DateTime RequestDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

编辑:

   [HttpGet]
    public ActionResult DispatchResponseIndex()
    {
        DispatchResponseModel model = new DispatchResponseModel();       


        //if the users session id isnt null then we know they have data related to this form
        object UserID = Session["TestID"];
        if (UserID == null)
        {
            return View(model); //default view               
        }
        else
        {
            UserID = Session["TestID"];
        }

        LoadDB(model, (Guid)UserID);
     //looking at the model here the RequestDate has a valid date of  //{5/24/2013 12:00:00 AM}

        return View(model); 
    }
Run Code Online (Sandbox Code Playgroud)

编辑2:

如果我使用@ Html.TextBox("asdasd",Model.RequestDate); 然后它将以字符串格式显示保存的日期,但我需要使用文本框的内置日期编辑器.

Pio*_*ula 22

这似乎造成了一些混乱,让我生气!

如果你使用DataType.Date你需要设置它

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
Run Code Online (Sandbox Code Playgroud)

在那种格式中,使用破折号.您可以尝试添加lang标记,但Chrome会检查本地计算机的日历格式,并且该格式将始终取代任何内容.(如果更改计算机区域设置,则必须完全重新启动Chrome)

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

当Chrome显示日期选择器时,它将处于计算机区域设置的正确区域设置中.这真好?但有些控制会很好!无论如何它对我有用.

这样,当您加载页面时,如果设置了日期,则将填充日期,并且用户可以选择新日期.

在此输入图像描述


Joh*_*rds 13

最后

我是个白痴.我不知道Chrome有一个添加的日期选择器.我认为这是MVC内置的东西.我需要使用一个实际的jquery日期选择器.感谢大家的所有信息.

  • 你不是唯一一个,只是发生在我身上,这个评论让我意识到了这一点. (3认同)
  • 它的HTML5 Datepicker,每个HTML5浏览器实现自己.对于移动设备和桌面也不同,因此它原生于平台并正确设置了语言环境.我花了一段时间才弄清楚这是怎么回事.但是一旦你知道,你的老板. (2认同)

小智 3

在模型中添加格式行

[Display(Name = "Time")]        
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
[DataType(DataType.Date)]
public DateTime RequestDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

更新

或者

您可以将模型属性日期时间更改为字符串吗?并将您的日期时间对象转换为字符串!

或者

或者您可以在编辑器字段中格式化该值。例如示例

@Html.TextBoxFor(model => model.FromDate, "{0:d}")
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了这个,它仍然只显示“mm/dd/yyyy”。它变得非常奇怪。我正在使用 [DataType(DataType.Date)],这样我就可以拥有内置的日期编辑器。 (3认同)