如何解决在MVC 3 C#中将datetime更改为date
| 我正在将MVC 3与C#一起使用,并且在下拉列表中显示日期时遇到问题。 日期显示如下:4/21/2011 12:00:00 AM,但我只想以这种方式设置它们的格式:4/21/2011,这正是我数据库中的格式。 数据库中的date属性是date,而不是datetime。 模型中的代码:[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>
我哪里错了?
谢谢
解决方法
您可以尝试使用常规的html下拉菜单并手动设置html值。我敢肯定有更好的方法,它可能很脏,但是可以完成工作。
控制器:
ViewBag.Dates = BooksDates.Distinct();
视图:
<select>
@foreach (var date in ViewBag.Dates)
{
<option>
@Convert.ToDateTime(date.StartDate).ToShortDateString()
</option>
}
</select>
,如果我还没完全离开,DataFormatString
应该看起来像这样:
DataFormatString = \"{0:MM/dd/yyyy}\"
或更简单的使用短日期格式:
DataFormatString=\"{0:d}\"
,您可以扩展辅助程序类来执行此任务。
public static class FormatHelper
{
public static IHtmlString ToDate( this HtmlHelper helper,DateTime datetime )
{
return new HtmlString( datetime.ToShortDateString() );
}
}
鉴于:
@Html.ToDate( Model.Date )
不要忘记导入名称空间进行查看。
,就像
在控制器中:
ViewBag.Date = Convert.ToDateTime(SelectedDate);
鉴于
@Convert.ToDateTime(ViewData[\"Date\"].ToString()).ToShortDateString()
输出像:
2017/03/02
,您可以通过在纯c#上执行以下操作:
string date = Convert.ToDateTime(date).ToShortDateString();
,如果您使用的是sql,则可以采用以下方式:
select field1,convert(nvarchar(10),field2,101)
从表
//无论
让我解释一下这是怎么回事:
-field2是包含日期的字段。
-nvarchar(10)是您要查看的类型。这并不是很重要,因为它是您要接收的类型(转换的结果)。就像它是一个选择一样,您不必关心此处的数据类型。它仅用于显示数据。数字10是您要获取的字符串的长度。
-field2:
您要转换的字段(日期和小时)
101:这是风格
这告诉field2必须仅打印月/日/年。
有很多样式,您应该用谷歌搜索!
我希望它能起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。