【问题标题】:How to read ViewData value of type DateTime in javascript如何在 javascript 中读取 DateTime 类型的 ViewData 值
【发布时间】:2021-07-27 20:16:02
【问题描述】:

我正在实施 asp.net core 3.1 项目。在我的控制器方法中,我有一个由 DateTime 类型的值分配的 ViewData。现在在我的剃刀视图中,我需要它在 javascript 函数中的值。如果有人帮助我解决这个问题,我将不胜感激。

我目前所拥有的是使用:

<script>
    var datePart = @Html.Raw(ViewData["projectStartDate"]);
</script>

但它不起作用

【问题讨论】:

    标签: javascript asp.net-core


    【解决方案1】:

    一种方法是将日期值作为字符串注入,然后在脚本中将其解析为 JavaScript Date 值。最好将其作为强类型视图模型提供,但如果您出于某种原因需要使用 ViewData,举个例子:

    @{
        // Get the .NET DateTime from ViewData, convert to ISO string
        string dateString = "";
        if (ViewData["projectStartDate"] is DateTime date)
        {
            dateString = date.ToString("O");
        }
    }
    
    ...
    
    <script>
        // Parse into JavaScript value
        var datejs = Date.parse("@dateString");
    </script>
    

    【讨论】:

    • 感谢您的回复。我不明白 date.ToString("O"); 中的 0 是什么。它向我显示一个错误。
    • 它是一个格式说明符,用于创建“往返”格式 (ISO 8601) 的字符串。见docs.microsoft.com/en-us/dotnet/standard/base-types/…
    • 感谢您的回答。控制器中 ViewData["projectStartDate"] 的格式为 2021-10-05 10:58:56.000。使用您的建议后,datejs 会显示一个数字,例如 2347565...
    • 是的,这就是 JavaScript 表示日期的方式。您可以根据需要对其进行格式化。不知道问题是什么? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
    • 感谢您的回答。我的意思是我希望 javascript 变量也能正确显示格式,如 2021-10-05 10:58:56.000。我怎样才能像上面提到的那样转换 datejs 值格式?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 2012-02-12
    • 2011-01-23
    • 1970-01-01
    • 2023-01-23
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多