在Jsrender模板中将C#变量传递给辅助函数

时间:2017-05-21 07:54:36

标签: javascript c# razor jsrender

我需要将我的一个模型值传递给jsrender模板中的函数。我尝试使用@来访问C#变量,但它不起作用。以下是我的代码

<script type="text/x-jsrender" id="TemplateDate">>
 {{:~formatTemplateDate(Model.EstimatedCompletionDate)}} 
</script>

这是我的助手功能。

$.views.helpers({
    formatTemplateDate: function (dateEstimated) {
        "use strict";
        if (dateEstimated !== null) {
            if (!isSafari) {
                var options = {
                    year: "numeric",
                    month: "short",
                    day: "numeric",
                    hour: "2-digit",
                    minute: "2-digit"
                };
                return dateEstimated.toLocaleTimeString("en-us", options);
            } else {
                return dateEstimated;
            }
        } else {
            return null;
        }
    }
});

这是我在页面中出现的错误

Error: n.toLocaleDateString is not a function.

提前致谢。

的Dinesh。

2 个答案:

答案 0 :(得分:1)

我找到了解决办法。我们无法将@ Model.EstimatedCompletion日期时间变量值传递给辅助函数。需要将其转换为字符串并在辅助函数中需要将其转换回Datetime()。下面是修改后的代码。

<script type="text/x-jsrender" id="TemplateDate">>
 {{:~formatTemplateDate('@Model.EstimatedCompletionDate')}} 
</script>

在我的帮助函数中,我将其转换回日期类型, var formatedDate = new Date(date);

$.views.helpers({
    format: function (date) {
        "use strict";
        var formatedDate = new Date(date);
        if (!isSafari) {
            var options = {
                year: "numeric",
                month: "short",
                day: "numeric"
            };
            return formatedDate.toLocaleDateString("en-us", options);
        } else {
            return formatedDate;
        }
    }
});

谢谢,

的Dinesh。

答案 1 :(得分:0)

尝试使用@Html.Raw()

将值传递给函数
<script type="text/x-jsrender" id="TemplateDate">>
     {{:~formatTemplateDate('@Html.Raw(Model.EstimatedCompletionDate))')}} 
</script>