2009-10-06 45 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