如何将 DateTime 绑定到 RazorPages ViewModel?

2024-01-11

我有一个使用 RazorPages 的 ASP Core 2.2 项目,我正在绑定一些数据,其中一些数据发送给客户端,客户端需要在发送回之前根据需要编辑这些数据。

这对一切都非常有效,直到我想绑定一个 DateTime 对象。数据按预期绑定到 HTML datetime-local 控件,并根据网络流量,在 POST 请求表单数据中发回,但是 OnPost 中的 DateTime 对象始终读取为 01/01/0001

我已经在其他浏览器中检查过这一点,以防出现问题。 FireFox 甚至无法正确呈现本地日期时间(它只是一个文本框,而不是日期选择器)。

我还尝试将 DateTime 对象作为本地和 UTC 时间发送,并且我已将我的文化设置为 en-GB,因为这就是我所在的位置。

我的代码如下:

RequestLocalizationOptions localizationOptions = new RequestLocalizationOptions
{
    SupportedCultures = new List<CultureInfo> { new CultureInfo("en-GB") },
    SupportedUICultures = new List<CultureInfo> { new CultureInfo("en-GB") },
    DefaultRequestCulture = new RequestCulture("en-GB")
};

app.UseRequestLocalization(localizationOptions);

每行的 StartAt 设置为:

StartAt = DateTime.Now.ToUniversalTime(),

并像这样绑定在视图上:

<input asp-for="@Model.CreationData.DataLines[lnNo].StartAt" class="form-control"/>

整个绑定对象是:

public class JobCreationData
{
    [Required]
    public string Name { get; set; }

    [Required]
    public string Description { get; set; }

    public int SelectedJobWorkflow { get; set; }

    public List<JobCreationDataLine> DataLines { get; set; } = new List<JobCreationDataLine>();

    public class JobCreationDataLine
    {
        public int WorkflowVersionId { get; set; }
        public string WorkflowVersionCode { get; set; }
        public string WorkflowVersionDescription { get; set; }

        public int SelectedWorkCenterId { get; set; }

        public DateTime StartAt;

        public List<JobCreationBusinessUnit> BusinessUnits { get; set; }
    }

    public class JobCreationBusinessUnit
    {
        public int WantedBusinessUnitId { get; set; }
        public int BusinessUnitId { get; set; }
        public string Alias { get; set; }
        public bool IsRequired { get; set; }

        public int SelectedBusinessUnitLineId { get; set; }
    }
}

下面的屏幕截图显示了 HTML5 控件、绑定对象结果无效以及 OnPost 中发送的表单数据。

正如您所看到的,我显然希望 DateTime 能够正确绑定。

有任何想法吗?


按照您的要求,我会将其写为答案。

StartAt应该使用 setter 和 getter 转换为属性:

public DateTime StartAt { get; set; }

您可以通过制作更进一步的代码定制模型活页夹 https://www.stevejgordon.co.uk/html-encode-string-aspnet-core-model-binding.

想象一下您正在与不同的人一起工作DateTime格式和文化,并且您希望所有值在提交到后端时都采用特定格式。您可以将其作为活页夹编写一次,然后让它为您处理,而不是在任何地方手动执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 DateTime 绑定到 RazorPages ViewModel? 的相关文章

随机推荐

  • 如何更改 JFreeChart 中 NumberAxis 上的刻度标签?

    我正在使用 JFreeChart 并且希望能够将范围轴上的标签从数字更改为对我所在域更有意义的内容 我只看到用于自定义标签外观的选项 无法覆盖基于刻度线位置的标签 有谁知道如何覆盖tickLabel的文本 JFreeChartBarChar
  • 在 Spring Batch 中动态替换配置 xml 文件中占位符的值

    我正在使用 Spring Batch 2 版本 我正在使用从数据库读取数据JdbcCursorItemReader 我已成功获取数据并将其写入文件 下边是itemReader bean定义于Job xml File
  • 如何在 WebApp2 中解析 A​​ngular POST 请求

    如何从 Google App Engine WebApp2 中的 Angular POST 请求获取数据 self request body返回一个字符串 并且self request get key 什么也不返回 提交 POST 的 An
  • Java线程安全只写hashmap

    在我的 Java 类中 我包括一个Hashmap变量 类属性 并运行一些只写该变量的线程HashMap using put 每次写入发生时 它都会存储一个唯一的密钥 这是由设计完成的 Is the synchronized类方法上的关键字只
  • Android BootReceiver 不起作用

    我正在尝试监听重启事件 我创建了以下课程 import android content BroadcastReceiver import android content Context import android content Inte
  • C 内联汇编标签问题

    我目前是汇编的初学者 正在学习如何在课程中使用 C 内联汇编 话虽如此 当我编译文件时 我遇到了这个特定错误 tmp cckHnU89 s Assembler messages tmp cckHnU89 s 550 Error symbol
  • 为什么 iOS 需要启动图像? [复制]

    这个问题在这里已经有答案了 iOS 应用程序必须有启动图像吗 应用程序启动时会显示多长时间 我们可以控制时长吗 iOS 文档指出 启动图像是 App Store 提交的必要条件 但是我目前有一个可用的应用程序 但没有 只是忘记添加它 所以看
  • 我应该在 NSCell 上调用什么方法

    我正在使用自定义 NSCell 编写自定义 NSControl 它是一个控件 因此它必须响应鼠标 我在我的控制范围内创建了一个 NSTrackingArea 并实现了 mouseEntered mouseExited and mouseMo
  • 计算 1^X + 2^X + ... + N^X mod 1000000007

    有没有什么算法可以计算 1 x 2 x 3 x n x mod 1000000007 Note a b是a的b次方 约束条件是1 lt n lt 10 16 1 lt x lt 1000 所以N的值很大 我只能解决O m log m if
  • 异步 Servlet 与同步 Servlet

    Since Servlet 3 0异步处理 http www javaworld com javaworld jw 02 2009 jw 02 servlet3 html是支持的 始终使用异步处理会更好吗 或者说在什么情况下同步处理更好 使
  • Firefox 上的 JavaScript 错误:TypeError:无法重新定义不可配置的属性“userAgent”

    我目前在错误监控工具 Sentry 上收到一个奇怪的 JavaScript 错误 上面写着can t redefine non configurable property userAgent 似乎该错误发生在多个页面上 但仅发生在 Fire
  • 如何转换 Array? Kotlin 中的 Array

    我正在 Kotlin 中迈出第一步 并尝试编写一个简单的字符串分割函数 我是这样开始的 fun splitCSV s String Array
  • 拒绝加载字体 - Angular 2

    我从 Angular 2 开始 一直在研究路线 当我没有路线时 一切正常 但现在每次我去 home 时 都会收到此错误 Refused to load the font data font woff base64 d09GRgABAAAAA
  • conda 无法与 Fish shell 一起正常工作

    在 macOS 上的 Fish shell 内使用 conda 环境时 python仍然指向系统 python usr local bin python 而不是指向conda环境安装的python版本
  • 如何获取存储在 Azure 存储帐户中的数字文件的下载 URL

    存储后digital file in Azure blob storage 我想提供一个link到我的那个文件static website 具有no服务器端代码 当用户单击该链接时 用户应该能够将该数字文件下载到他 她的计算机上 Quest
  • 如何“放弃”表单更改?

    Setup 我有一个表格和一个 提交 按钮 理想情况下 用户应该填写表格 单击 提交 然后离开选项卡 如果他尝试离开选项卡而不保存更改 我需要通过 3 个选项提醒他 Save 放弃 放弃表单数据更改 并保留选项卡 就好像数据从未被修改过一样
  • Rspec 未在 Linux 中加载 ControllerMacros 模块(但在 OS X 上正常)

    我在使用 Devise 和 Rspec 的 Rails 应用程序中编写了一些控制器测试 下列的本指南 https github com plataformatec devise wiki How To Test controllers wi
  • 图像调整大小错误:CGBitmapContextCreate:不支持的参数

    我正在使用以下代码 来自博客文章 来调整图像大小 if inImage size width lt inImage size height Portrait ratio inImage size height inImage size wi
  • 添加到 std::vector 时类字段的奇怪行为

    我在以下情况下发现了一些非常奇怪的行为 在 clang 和 GCC 上 我有一个向量 nodes 有一个元素 一个类的实例Node 然后我调用一个函数nodes 0 这增加了一个新的Node到向量 当添加新节点时 调用对象的字段将被重置 然
  • 如何将 DateTime 绑定到 RazorPages ViewModel?

    我有一个使用 RazorPages 的 ASP Core 2 2 项目 我正在绑定一些数据 其中一些数据发送给客户端 客户端需要在发送回之前根据需要编辑这些数据 这对一切都非常有效 直到我想绑定一个 DateTime 对象 数据按预期绑定到