我有一个文本框,只能接受日期时间格式。我不知道如何在MVC中转换它。我也想知道如何重新排列为“yyyyMMdd”格式,这是需要传递的。
<%=Html.TextBox("effectiveDate") %>
我的控制器什么都没有:X
public ActionResult Index()
{
return View();
}
我知道我错过了什么......它是什么?
我现在并不担心进入一个糟糕的约会......我只想获得转换概念。
答案 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();
}
上的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)) %>
我不想在日期之后进行任何后端处理,所以一个简单的返回视图()已经足够好了,我试图做的事情。再次感谢罗伯特