【问题标题】:Calling a TypeScript class method from a ASP.NET MVC view从 ASP.NET MVC 视图调用 TypeScript 类方法
【发布时间】:2017-11-29 17:05:28
【问题描述】:

我有一个像下面这样的 TypeScript 类

export class A
{
     myFunc(n : number){
         alert(n);
     }
}

我需要在我的选择元素 onchange 事件上呈现一个属性,以便它调用 TypeScript 类方法。

writer.AddAttribute(HtmlTextWriterAttribute.Onchange,
           string.Format("javascript:new A().myFunc({0})", this.Number));

我的问题是如何找到确切的定义,以便能够正确调用 TypeScript 函数?

编译出来的js是这样的……

define("app", ["require", "exports", "jquery"], function (require, exports, $) {
   "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });

    function myFunc(rsw_id) {
       alert(rsw_id);
    }
});

【问题讨论】:

  • 恐怕不能在.cshtml 中使用纯Typescipt。见this
  • @RomanKoliada 确定不能使用 TS 语法,但是如果包含正确的 JS,TS 中声明的类将是新的并且可以在 cshtml 中调用
  • TypeScript 被渲染成 javascript...正如@TitianCernicova-Dragomir 所说,我正在寻找正确的 js 调用...
  • 您使用什么工具之王来编译您的 TS ?似乎您的 tsconfig 配置为使用 require.js
  • 我猜你需要先加载一个模块。见thisthis

标签: javascript asp.net-mvc typescript


【解决方案1】:

我希望它会对某人有所帮助。
当对类等使用导出和导入时,生成的 JavaScript 代码依赖于 requireJS,您需要在项目中正确安装并配置它。
RequireJS 很棒,但在某些情况下,您只需将类分成不同的文件而不是不同的模块。
将 RequireJS 与 ASP.NET MVC 结合是可能的,并且有很多很棒的文章,但对我来说,这是一种矫枉过正的做法,而且代码很复杂,没有真正的必要性。在我的应用程序中只有一个模块。
因此,我从类中删除了所有导出/导入表达式,并为模块系统设置选择了“无”(在项目属性,TypeScript 部分)。 现在生成的 javascript 将所有类公开为可以轻松处理的函数。

这篇文章真的帮助了我: http://www.mobzystems.com/blog/creating-a-simple-typescript-web-app/

【讨论】:

    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    相关资源
    最近更新 更多