You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC Razor视图中JS函数接收UK日期字符串异常问题求助

解决Razor视图中传递UK格式日期字符串到JS函数的问题

嘿,我立刻就发现你遇到的问题根源了!当你直接在JS里写@Model.dateFrom时,Razor引擎会把这个日期字符串里的斜杠/当成除法运算符来解析。举个例子,你的01/03/2018会被计算成 1 ÷ 3 ÷ 2018 ≈ 0.000165,而不是作为完整的日期字符串传入LoadDatatable函数——这就是为什么日期内容完全变了的原因。

下面给你几种靠谱的解决方案:

方案1:给日期字符串包裹单引号

最简单的方式就是把Razor输出的日期用单引号括起来,让JS把它识别成字符串:

<script type="text/javascript">
    $(document).ready(function () {
        function LoadDatatable(to, from) {
            alert(to);
            alert(from);
        }
        // 给日期字符串添加单引号,确保JS识别为字符串类型
        LoadDatatable('@Model.dateFrom', '@Model.dateTo');
    });
</script>

方案2:用Json.Encode安全序列化(推荐)

如果你的日期字符串里可能包含特殊字符(虽然UK格式日期一般不会),或者想更严谨地处理字符串转JS字面量,推荐使用Json.Encode方法,它会自动帮你添加引号并处理转义:

<script type="text/javascript">
    $(document).ready(function () {
        function LoadDatatable(to, from) {
            alert(to);
            alert(from);
        }
        // 使用Json.Encode序列化字符串,避免解析错误
        LoadDatatable(@Json.Encode(Model.dateFrom), @Json.Encode(Model.dateTo));
    });
</script>

额外说明

如果你的模型里的dateFrom和dateTo其实是DateTime类型(而不是字符串),可以先通过ToString指定UK格式再输出:

LoadDatatable('@Model.dateFrom.ToString("dd/MM/yyyy")', '@Model.dateTo.ToString("dd/MM/yyyy")');

这样修改后,LoadDatatable函数就能收到正确的UK格式日期字符串啦!

内容的提问来源于stack exchange,提问作者tcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:06:06