【发布时间】:2018-09-23 17:45:12
【问题描述】:
我正在使用 ASP.NET Core v2 和 Razorpages
在 SQL(和模型中)中,我有一个数据类型为“int”的字段 [FrDt],我需要在其中存储日期值(作为 int)(我无法在 SQL 中更改数据类型)
如果我在模型中设置[DataType(DataType.Date)],我会自动在网络上获得输入“日期”类型。但是当我提交时,这些值不会发送到服务器。可能是因为该值是日期类型并且该字段是 int
RAZORPAGE
<input asp-for="@Model.AgrRow.FrDt" class="form-control" />
型号
[DataType(DataType.Date)]
public int FrDt { get; set; }
我的目的是将网页上输入的值转换为这样的 int:
CS 页面
AgrRow.FrDt = int.Parse(AgrRow.FrDt.ToString("yyyyMMdd"));
但输入的日期值不会发送到服务器,而是发送 0(零),因此解析不起作用。如果我从模型中删除 [DataType(DataType.Date)],我会在网络上获得一个正常的输入框,并且我输入的值会发送到服务器。
顺便说一句:我正在使用 Chrome 和内置的日期选择器
我该如何解决这个问题?
UPDATE - Post 方法返回 0,可能是因为 SQL 中的默认值为零
public async Task<IActionResult> OnPostSaveNewRowAsync() {
Console.WriteLine("FRDT = " + AgrRow.FrDt.ToString());
}
【问题讨论】:
-
您的
int的值与(滴答声?)有什么关系 -
您的
int值如何解释为日期 - 例如自01/01/0001以来Ticks的数量? -
您正在编辑数据,因此您使用视图模型,并且该视图模型可以包含
DateTime属性。在控制器方法中,您可以在保存数据模型时在 POST 方法中将int转换为DateTime,反之亦然 -
为什么不向您的视图模型添加一个属性,它会为您完成
int -> Date和Date -> int的转换? -
正如其他人所建议的,在视图模型中使用 Date 并仅在与数据库交互时将其转换为/从 int 转换。问题解决了。
标签: c# asp.net-mvc datetime datetime-format razor-pages