asp.net mvc -在mvc 3 c#中更改datetime为date

本文关键字:mvc datetime date net asp | 更新日期: 2023-09-27 17:50:09

我使用MVC 3与c#和我有一个问题时,在下拉列表中显示日期。日期显示如下:4/21/2011 12:00:00 AM,但我只是想这样格式化它们:4/21/2011,这正是我的数据库中的格式。

数据库中的date属性是date而不是datetime。

模型中的代码:

[DisplayFormat(DataFormatString = "{mm/dd/yyyy}", ApplyFormatInEditMode=false)]
public DateTime? booksDate { get; set; }

控制器是这样的:

 var booksDates = from dates in db.Books
                             orderby dates.booksDate
                             select new { dates.booksDate};
          ViewBag.Dates = BooksDates.Distinct();

最后是我视图中的代码:

<td>Books dates</td>
            <td>@Html.DropDownList("booksDate", new SelectList(ViewBag.Dates as System.Collections.IEnumerable, "booksDate", "booksDate"), "Select a date") </td>

我哪里错了?

谢谢

asp.net mvc -在mvc 3 c#中更改datetime为date

您可以尝试使用常规的html下拉菜单并手动设置html值。我相信有更好的方法,可能有点脏,但它能把工作完成。

控制器:

ViewBag.Dates = BooksDates.Distinct();

视图:

<select>
@foreach (var date in ViewBag.Dates)
{
    <option>
       @Convert.ToDateTime(date.StartDate).ToShortDateString()
    </option>
}
</select>

如果我没有完全关闭DataFormatString应该是这样的:

DataFormatString = "{0:MM/dd/yyyy}"

或者更简单的使用短日期格式:

DataFormatString="{0:d}"

您可以扩展helper类来完成视图中的工作。

public static class FormatHelper
{
    public static IHtmlString ToDate( this HtmlHelper helper, DateTime datetime )
    {
        return new HtmlString( datetime.ToShortDateString() );
    }
}
在视图:

@Html.ToDate( Model.Date )

就像在控制器:

ViewBag.Date = Convert.ToDateTime(SelectedDate);

@Convert.ToDateTime(ViewData["Date"].ToString()).ToShortDateString()
输出:

03/02/2017

您可以在纯c#中这样做:

string date = Convert.ToDateTime(date).ToShortDateString();

如果您正在使用sql,您可以这样做:

select field1, convert(nvarchar(10), field2, 101) 

从表//不管,

让我解释一下这是怎么回事:

-field2是包含日期的字段。-nvarchar(10)是您要查看的类型。这不是很重要,因为这是你收到的类型(转换的结果)。就像它是一个select,你不关心这里的数据类型。它只是用来显示数据的。数字10是你得到的字符串的长度。

-field2:

要转换的字段(带小时的日期)

101:这是风格。这告诉field2必须只打印月/日/年。

有很多风格,你应该谷歌一下!