我正在使用MVC4并为在SQL服务器上驱动的大型进程构建前端应用程序 - 所以我的EF方法首先是数据库,因为所有逻辑和处理都在那里完成。
我有一个实体(Sql Table),它有一个日期字段,但它写成十进制(8,0),格式为“yyyyMMdd”(20160623)。
有没有办法让我做一个DateTime.TryParseExact并将一个Datetime值返回到TextBoxFor? TryParseExact因为值为0,有效日期,99999999。
我尝试使用辅助方法(c#而不是cshtml),但我得到了
模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式
我不想摆弄模型和DisplayFormat注释,因为我可以预期数据库会更改,而数据库中的Update Model会覆盖我的格式。
修改
这将是一个临时解决方案,但也许会有更好的方法(实际上使用TextBoxFor)
@Html.TextBox("DateAdded", nHelpers.YYYYMMDDToShortDateString(Model.DateAdded.ToString), New With {.class = "tBox", .style = "width: 80px"})
答案 0 :(得分:0)
Views \ Shared \ EditorTemplates,创建名为CoreDateToShortDateString的新局部视图。使用此代码:
@ModelType System.Decimal?
@If Model IsNot Nothing Then
Dim datum As DateTime
If DateTime.TryParseExact(Model.Value.ToString, "yyyyMMdd", Nothing, Globalization.DateTimeStyles.None, datum) Then
@Html.TextBox("", datum.ToShortDateString)
Else
@Html.TextBox("", Model.Value)
End If
End If
使用:
@Html.EditorFor(Function(model) model.DateAdded, "CoreDateToShortDateString")