Asp.net mvc 不显示日期时间的asp mvc编辑器

Asp.net mvc 不显示日期时间的asp mvc编辑器,asp.net-mvc,razor,Asp.net Mvc,Razor,我试图显示从razor文件中的数据库检索到的datetime字段,如下所示: @Html.EditorFor(model => model.RequestDate); 我100%确定RequestDate不是空的,因为我检查了视图中传递的模型,它是来自数据库的日期。但是,datetime文本框仍然显示“mm/dd/yyyy”。我不知道为什么不显示日期。有什么想法吗?多谢各位 这是我的模型: [Display(Name = "Time")] [DataType(Dat

我试图显示从razor文件中的数据库检索到的datetime字段,如下所示:

 @Html.EditorFor(model => model.RequestDate);
我100%确定RequestDate不是空的,因为我检查了视图中传递的模型,它是来自数据库的日期。但是,datetime文本框仍然显示“mm/dd/yyyy”。我不知道为什么不显示日期。有什么想法吗?多谢各位

这是我的模型:

      [Display(Name = "Time")]
    [DataType(DataType.Date)]
    public DateTime RequestDate { get; set; }
编辑:

   [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); 
    }
编辑2:

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

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

在您的模型中添加格式行

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


可以将模型属性datetime更改为string吗。并将datetime对象转换为字符串

也可以在编辑器字段中格式化该值

@Html.TextBoxFor(model => model.FromDate, "{0:d}")
决赛


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

我遇到了完全相同的问题。如果您查看返回控制器的HTTP Post以及Post中日期的格式,它是yyyy-MM-dd

我把我的数据注释改成了这个,它成功了。。。除了现在,索引列表视图显示yyyy-mm-dd格式。编辑在日期选择器控件中显示mm/mm/yyyy

添加到模型日期-

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")

自从1980年以来,我看到的每一个应用程序都使用了日期和时间。为什么这里还是一团糟,女士?

这似乎引起了很多混乱,这让我很恼火

如果使用
DataType.Date
则需要如下设置:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
即使设置
lang
标记也会被忽略;下面是一个使用Chrome和
的示例:

Chrome的日期选择器也使用本地计算机的区域设置。页面加载时,将填充日期(如果已设置),用户可以选择新日期:


注意:如果您更改了计算机的区域设置,您必须完全重新启动Chrome才能看到区域设置的更改。

事实上,直到我看到这篇文章,我才意识到Chrome和IE之间有“日期选择器”的区别,尽管我从MVC教程中获得了示例页面布局

对于像我以前一样没有意识到差异的人,请查看以下比较:


这是我在模型中的操作方式

[Display(Name = "Effective Date")]
    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MMM-yyyy}")]
    public DateTime? Effectivedate 
    {
        get { return EffectivedateEdit; }
        set { EffectivedateEdit = value; EffectivedateEdit = value; } 
    }


    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
    public DateTime? EffectivedateEdit { get; set; }

DataFormatString必须与下面的“{0:yyyy-MM-dd}”完全相同,并且只有在@Html.EditorFor与日期选择器控件一起工作时才是如此。

添加您的操作以查看发生了什么您能详细说明一下吗?我已经使用MVC一周了。我在控制器中设置RequestDate并将其传递到视图中。这还不够吗?应该足够了,但是,请检查您的模型以及您添加的注释。它可能与DisplayFormat有关。我认为可能是因为它是日期而不是日期时间。您能告诉我们如何将模型传递到视图吗?为了排除任何错误,我尝试了这个,但它仍然显示“mm/dd/yyyy”。它变得非常奇怪。我正在使用[DataType(DataType.Date)],因此我可以使用内置的日期编辑器。您可以将模型属性datetime更改为string吗。并将datetime对象转换为字符串!!所以你想让我说“publicstringrequestdate{get;set;}”?因为这会删除日期编辑器。是的。或者您可以在编辑器字段中格式化该值它显示了一个日期,但不再有该文本框的任何日期下拉列表。你不是唯一的一个,只是发生在我身上,这条评论帮助我实现了它。它的HTML5日期选择器,每个HTML5浏览器都实现了它自己。移动和桌面也不同,因此它是平台的本机,并正确设置了区域设置。我花了一个小时但一旦你知道了,你的老板就会知道。不幸的是,这个解决方案也会影响DisplayFor(),所以你所有的日期都会以这种国际格式显示。