如何在HTML.Textbox上转换为DateTime?

时间:2009-10-06 15:38:08

标签: c# asp.net html asp.net-mvc

我有一个文本框,只能接受日期时间格式。我不知道如何在MVC中转换它。我也想知道如何重新排列为“yyyyMMdd”格式,这是需要传递的。

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

我的控制器什么都没有:X

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

我知道我错过了什么......它是什么?

我现在并不担心进入一个糟糕的约会......我只想获得转换概念。

3 个答案:

答案 0 :(得分: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();
}

请务必查看http://nerddinnerbook.s3.amazonaws.com/Intro.htm

上的NerdDinner教程

答案 1 :(得分:0)

@Robert的回答是有效的。但是,如果您使用的是强类型的ViewModel,并且这是一个只读视图,那么我建议在绑定视图之前将属性设置为字符串并设置格式。

如果它是可编辑的形式,则DateTime属性可能更合适。

我使用AutoMapper在不同视图中展平我的域实体,并使用以下DateTime转换器(这使得它适用于所有英语语言文化,如果您的受众更广泛,您可能需要更多地考虑文化)

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

答案 2 :(得分:0)

我会把它交给罗伯特,但看了他的链接。我从一个简单的解决方案开始......

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

我不想在日期之后进行任何后端处理,所以一个简单的返回视图()已经足够好了,我试图做的事情。再次感谢罗伯特