2009-10-06 46 views
1

我有一個文本框只能接受日期時間格式。我不知道如何在MVC中進行轉換。我還想知道如何重新排列爲「yyyyMMdd」格式,這是需要傳遞的格式。如何轉換爲HTML.Textbox上的DateTime?

<%=Html.TextBox("effectiveDate") %> 

我控制器無關:X

public ActionResult Index() 
{ 
    return View(); 
} 

我知道我失去了一些東西......是什麼呢?

我不擔心現在輸入一個錯誤的日期......我只是想獲得轉換的概念。

回答

3

對於一個強類型的模型:

<%= Html.TextBox("effectiveDate", Model.effectiveDate.ToString("yyyyMMdd")) %> 

如果它不是一個強類型模型(即你擁有了它在ViewData的),試試這個:

<%= Html.TextBox("effectiveDate", 
    ((DateTime)ViewData.EffectiveDate).ToString("yyyyMMdd")) %> 

爲了證明使用第二種方法,將您的控制器代碼更改爲:

public ActionResult Index() 
{ 
    ViewData("EffectiveDate") = DateTime.Now; 
    return View(); 
} 

確保您查看NerdDinner導師ial at http://nerddinnerbook.s3.amazonaws.com/Intro.htm

+0

看來這是我在找的,但我的控制器只是有返回視圖()。我在哪裏搞亂? – MrM 2009-10-06 16:04:25

+0

我編輯了我的答案以添加一些控制器代碼,以便您可以看到它的實際應用。 – 2009-10-06 16:36:20

+0

我認爲你的權利,但我似乎無法得到viewdata工作.. – MrM 2009-10-06 17:44:53

0

@ Robert的回答是有效的。但是,如果你使用強類型ViewModels,這是一個只讀視圖,那麼我會建議屬性是一個字符串,並在視圖被綁定之前設置格式。

如果它是一個可編輯的窗體,那麼DateTime屬性可能會更合適。

我使用AutoMapper打平我的域實體在不同的觀點和利用下列日期時間轉換器(這使得它洽所有講英語的文化,你可能要考慮文化更多,如果你的觀衆是更寬)

public class DateTimeTypeConverter : ITypeConverter<DateTime, string> 
     { 
      public string Convert(DateTime source) 
      { 
       return source.ToString("dd-MMM-yyyy"); 
      } 
     } 
0

我會把這個給羅伯特,但看完他的鏈接後。我開始了一個簡單的解決方案...

<%=Html.TextBox("effectiveDate", String.Format("{0:g}", DateTime.Now)) %> 

我沒有想做任何後端處理,直至日後所以一個簡單的返回視圖()是不夠好,對我試圖做的。再次感謝羅伯特

+0

我把日期放在控制器中,因爲如果你從存儲庫查找日期,那麼它會去,但如果你只是想顯示你的方法,你的方法工作正常當前日期和時間。 – 2009-10-06 18:34:57