格式化TextBoxFor数据库的第一个自定义日期格式

时间:2015-06-23 15:29:06

标签: asp.net-mvc asp.net-mvc-4

我正在使用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"})

1 个答案:

答案 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")