2011-04-14 23 views
4

我在C#中使用MVC 3,並且在下拉列表中顯示日期時出現問題。 日期顯示如下:4/21/2011 12:00:00上午,但我只是想這樣格式化它們:4/21/2011,這正是我的數據庫中的格式。在MVC 3中更改日期時間3 C#

數據庫中的日期屬性是日期而不是日期時間。

模型的代碼:

[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> 

在那裏我錯了?

感謝

+2

哪裏'livreDate 「進來?我看不出你提到的任何地方除了你的模型... – 2011-04-14 20:16:40

+0

嗨,你是對的,livreDate在任何地方被提及,它只是一個壞的複製粘貼,但在我的真實代碼其書籍日期不livreDate – user708683 2011-04-15 11:46:40

回答

-1

您可以通過執行做它在純C#:

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

嗨埃裏克,我知道我可以在純C#中做到這一點,但在哪裏,以及如何?因爲我必須在我的模型,控制器或視圖(下拉列表)中執行此操作。換句話說,我必須尊重MVC架構 – user708683 2011-04-15 11:49:38

0

如果我不能完全關閉DataFormatString應該是這樣的:

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

或者更簡單使用短日期格式:

DataFormatString="{0:d}" 
+1

我已經試過這個,但我總是有這種格式:2011年4月21日中午12:00:00雖然我想這種格式:4/21/2011 – user708683 2011-04-15 12:47:39

-1

,如果你使用的是SQL,你可以這樣來做:

select field1, convert(nvarchar(10), field2, 101) 
從表 哪裏//什麼的,

讓我解釋一下什麼是這一切約

-field2是包含日期的字段。 -nvarchar(10)是您將要檢測的類型。這並不重要,因爲它是你正在接受的類型(轉換的結果)。就像它是一個選擇,你不關心這裏的數據類型。它僅用於顯示數據。數字10是你得到的字符串的長度。

-field2:

要轉換(與時間日期)

101場:它的風格。 這告訴field2必須僅打印月/日/年。

有很多風格,你應該谷歌他們!

我希望它有效。

5

您可以嘗試使用常規html下拉菜單並手動設置html值。我確信有更好的方法,它可能很髒,但它完成了工作。

控制器:

ViewBag.Dates = BooksDates.Distinct(); 

查看:

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

} 
</select> 
+0

我已經使用這個例子,對於'dd/MM/yyyy'格式[這裏](http://stackoverflow.com/a/29611490/2218697),謝謝所有人 – stom 2015-04-13 17:36:27

0

你可以擴展輔助類做的工作考慮。

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

鑑於:

@Html.ToDate(Model.Date) 

不要忘記導入命名空間來查看。

0

如等作爲在控制器 :

ViewBag.Date = Convert.ToDateTime(SelectedDate); 

鑑於

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

輸出像:

2017年3月2日