15

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

 @Html.EditorFor(model => model.RequestDate);

我 100% 确定 RequestDate 不为空,因为我检查了视图中传递的模型,它是数据库中的日期。但是,日期时间文本框仍显示“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:

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

4

8 回答 8

25

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

如果你使用DataType.Date你需要这样设置:

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

Chrome 的日期选择器使用本地计算机的短日期格式。 即使设置lang标签也会被忽略;这是一个使用 Chrome 和的示例<html lang="en-GB">

在此处输入图像描述

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

在此处输入图像描述

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

于 2014-04-30T21:04:16.993 回答
15

最后

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

于 2013-05-30T19:48:13.993 回答
3

在模型中添加格式行

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

更新

或者

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

或者

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

@Html.TextBoxFor(model => model.FromDate, "{0:d}")
于 2013-05-30T18:59:07.997 回答
2

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

对于没有意识到差异的人,就像我之前所做的那样,请在下面找到比较:

在此处输入图像描述

于 2014-08-11T00:19:20.303 回答
1

这就是我在模型中的做法

[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; }
于 2015-09-11T13:36:08.253 回答
1

DataFormatString 必须完全像这样 "{0:yyyy-MM-dd}" 然后只有 @Html.EditorFor 才能与日期选择器控件一起使用。

于 2021-06-15T16:32:40.520 回答
0

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

我将我的数据注释更改为此并且它工作......除了现在索引列表视图显示 yyyy-mm-dd 格式。并且编辑在日期选择器控件中显示 mm/mm/yyyy?

添加到模型日期 -

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

恕我直言,我自 1980 年以来看到的每个应用程序都使用了日期和时间。为什么MS先生还是一团糟?

于 2013-08-08T18:01:16.357 回答
0

我也花了大约 5 天的时间来了解如何完成它,所以可能会对某些人有所帮助

首先在模型中你应该有一行:[DataType(DataType.Date)]

然后在视图中,您应该使用@Html.TextBoxFor 而不是@Html.EditorFor

enter 

    [DataType(DataType.Date)]
    public DateTime Expireddate { get; set; }

代码在这里

审阅如下:

enter  <td>

                  
                    @Html.TextBoxFor(modelItem => item.Expireddate.Date, "{0:yyyy-MM-dd}",

                  new
                  {
                      onkeydown = "return  event.keyCode != 13",
                      @class = "form-control datepicker",
                      @type = "date",
                      @value = ToolShare.datetoStringyyyymmddviewnet(@item.Expireddate.Date),
                      id = @item.id,
                      onChange = "replaceContentsOfDivupdateExpireddate(this.id, this.value)"

                  })


                    @Html.ValidationMessageFor(modelItem => item.Expireddate)
                </td>

代码在这里

函数 datetoStringyyyymmddviewnet 将日期时间转换为字符串,如:yyyy-mm-dd

enter  public static String datetoStringyyyymmddviewnet(DateTime datevalue)
    {

        // yyyy-mm-dd  to date

       

        return datevalue.Year +"-" + datevalue.Month +"-"+ datevalue.Day;
    }

代码在这里

于 2021-11-21T23:46:02.117 回答