如何在打字稿而不是javascript中使用剃刀代码

时间:2018-12-27 05:11:53

标签: typescript razor asp.net-core-mvc

这是我的.chstml代码

@using MyProject.Constant.MyConstants

.chstml内部,我在

之类的javascript中使用了此常量值
switch (value) {
    case @((int)MyConstants.ValueOne):

现在,我必须将此JavaScript更改为打字稿文件。我想在打字稿中使用这些常量值。

如何在打字稿中包含命名空间MyProject.Constant.MyConstants才能使用它?

1 个答案:

答案 0 :(得分:1)

请注意,不能直接在外部.ts文件(具有Razor语法)内部使用服务器端对象(包括C#名称空间),例如外部JS文件。但是,您可以在CSHTML文件中创建具有data-属性以包含整数值的隐藏元素:

<div id="valueone" data-valueone="@MyConstants.ValueOne" style="display:none">...</div>

并使用.ts将其转换为外部parseInt文件中的常量整数值(假设使用jQuery):

var valueOne = parseInt($('#valueone').data('valueone'));

然后将该值作为switch条件放在case块中:

switch (value) {
    case valueOne:
        // do something
        break;

    // other cases

    default:
        // do something else
        break;
}

参考文献:

TypeScript Converting a String to a number

TypeScript within .cshtml Razor Files

Pass value from c# to cshtml to TypeScript