- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 ASP.NET-MVC 框架开始一个新项目。我想在这个项目中使用 TypeScript 代替 JavaScript。 Visual Studio 很容易支持 TypeScript,但似乎与 .cshtml razor 文件不(完全)兼容。我能够在 .ts 文件中创建我的类并在我的 .cshtml 文件中调用这些类,问题是当我将参数传递给 .cshtml 文件中的对象时 TypeSafety 被忽略并且函数运行就像一个类型从未定义。
.ts 文件
export class SomeClass {
name: number;
constructor(public tName: number) {
this.name = tName;
}
public sayName() {
alert(this.name);
}
}
.cshtml 文件
var instance = new SomeClass("Timmy");
instance.sayName();
如您所见,我将一个字符串传递给构造函数,即使我明确定义了参数只接受数字,但 TypeSafely 被忽略并且 TypeScript/JavaScript 执行时就好像没有问题一样。
这两种文件类型都是由 Microsoft 发明的,所以我有点惊讶它们彼此之间并没有更友好。这不是世界末日,至少我仍然可以使用面向对象编程,我只是想知道是否有其他人经历过这种情况并且可以给我一个简短的解释。
最佳答案
TypeScript 转译器仅检查和转译仅包含以下内容的文件:
CSHTML 文件基本上是为包含 Razor/C# 代码而创建的,当然还有 HTML/JavaScript/CSS。
一些开发人员试图将 Javascript 代码和 CSS 样式表直接添加到 Cshtml 文件中,这不是一个好的做法。
JavaScript 代码和 CSS 样式应该在其自己的文件中。然后在您的 CSHTML 中使用 script
(Javascript) 或 style
(CSS) 标记来引用该文件。
不推荐将 Javascript 代码直接放入您的 View (CSHTML 或只是 HTML),因为它违反了 Unobtrusive JavaScript 的以下原则:
Separation of functionality (the "behavior layer") from a Web page's structure/content and presentation (source Wikipedia)
一些 ASP.Net MVC 开发人员仍然继续将他们的 Javascript 代码直接放入他们的 Razor View 中,因为他们需要将一些来自 View 模型的数据直接传递给 JavaScript 代码。当 Javascript 代码已经在 View 中时,可以很容易地传递数据而不会出现任何复杂情况。但我已经说过这不好 ;-)。
这种破坏 Unobntrusive JavaScript 原则的事情是可以避免的。所有需要由 JavaScript 代码读取的数据都应该使用 HTML 元素中的数据属性来存储,例如
<span id="mySpan" data-t-name="123456">Hello World</span>
然后在您的 TypeScript 代码中使用 jQuery(或 vanilla javascript)来获取您在 CSHTML View 中设置的数据,如下所示:
let tName: number = int.Parse($("#mySpan").data("t-name"));
var instance = new SomeClass(tName);
instance.sayName();
之后,将 TypeScript 生成的 js 文件引用到您的 CSHTML 中。
希望对您有所帮助。
关于.net - .cshtml Razor 文件中的 TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40429693/
我的公司正在尝试制定一些关于使用哪种技术来构建应用程序的指南。在做我的研究时,我感到很困惑。 似乎有 3 种 ASP.NET 技术。 MVC Razor Razor 页 MVC 对我来说相当清楚,因为
我正在尝试使用 Razor(来自预览版)将 MVC 项目升级到 Beta,现在我遇到了 Razor 没有进入它用来访问的登录 View 的奇怪现象(当有人要求执行需要授权的操作时)。 我的网络配置有
我想在 Razor 页面中包含一个类型化的模型子页面。我知道 SS 与 MVC Razor 不同。这样做的方式可能有些不同。 到目前为止,这就是我想出来的(看起来很丑,知道......): /
我在 Views 的同一个子文件夹中有两个 cshtml 文件。其中一个模板旨在包含另一个模板。我试图做到这一点,如下所示: 主模板: @Html.Partial("~/View
尝试通过部分将模型对象呈现为 JSON 结构,如下所示: @if( Model.IsEmpty ) { @( Model.UseNull ? "null" : "" ) } else {
现在我有下一个并且它有效 @foreach (TestLogs.Repository.DatabaseModel.Platforms CurrentPlatform in Model.Appl
我想知道如何在 Razor Pages 2.1 中创建和分配角色。应用。 我已经找到了如何为 MVC 应用程序( How to create roles in asp.net core and ass
我正在使用 Razor Engine from CodePlex在控制台应用程序中。当我在 VS 2010 IDE 中以 Debug模式运行时,一切正常。从 shell 来看,即使是上述 CodePl
我正在学习 ServiceStack razor 并希望更好地使用它(一般是 ServiceStack),但我无法让智能感知在模型上工作(通过继承指令) 这是我到目前为止的尝试:http://www.
如何在 Razor 辅助方法中包含不间断空格 ( )?这是有问题的助手: @helper RenderClipResult(Clip clip, IList searchTerms) {
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我有一些 Razor 页面,其中包含大量条件逻辑、循环、部分 View 等。保持输出标记在语义上正确很容易,但使用正确的缩进和换行符对其进行格式化则更困难。我怎样才能在运行时自动执行此操作?有模块或
我有: @: 但它呈现为 ...lesson_icon/d40d2ff2-d06b-4fd8-80a0-0ed31bbc04eb%20.png 如何去掉.png前面的%20? 最佳答案 文件扩展名前
我有 6 个相同内容类型“新闻”的项目,在每个项目中我都有一个字段 newsIntro。我想将特定页面中的字段放在另一个页面上,因此我需要定位特定字段,因此它可能是节点 1702 上的 newsInt
是否有任何支持自动完成的 Razor 模板 (.cshtml) 的轻量级编辑器? 或任何支持 Razor 自动完成的 Notepad++、Sublime Text 2 等插件? 最佳答案 自上次测试版
有没有办法在 Razor View 引擎中创建类似的函数? @{ View.Title = "Clients"; private string GetRowClassName(RowS
我有一个名为 item 的对象,item 有一个属性 itemId。我正在尝试建立一个包含 itemId 后跟 .html 的网址...所以它看起来像“myNiftyItem-123456.html”
我想知道如何在 Razor Pages (Page.cshtml) 中获取路由值。 前任。https://localhost:44320/AdminPanel/Admins如果我使用 MVC,我会将这
如何在 F# 项目中使用 ServiceStack.Razor? 我添加了对 ServiceStack.Razor 的引用(这似乎在 Windows 上没有问题,但出于某种原因在 Mac 上的 Mon
通过Ctrl+E、D格式化这部分代码: if (row % 3 == 0) { @: } 给我: if (row % 3 == 0) { @:
我是一名优秀的程序员,十分优秀!