.net - 在 ASP.Net 中使用模板生成 JavaScript

标签 .net asp.net javascript templates

我需要在服务器上生成 JavaScript。我可以通过使用 ASPX 页面来模板化 JavaScript 来做到这一点,但我收到警告并且我没有从我想要的语法高亮中受益。有没有办法告诉 .Net 环境/Visual Studio 某个 ASPX 页面应该输出非 HTML 文本?

这样做的原因是本地化。我的本地化字符串来自服务器,我需要在页面上的 JavaScript 构造中使用这些字符串。我想到的最简单的方法是拥有一个 JS 文件(我现在将其称为 l18n.js),它在 JSON 对象中定义本地化字符串。

l18n = {
    OK: <%= GetString("OK") %>,
    Cancel: <%= GetString("Cancel") %>,

    ConfirmDialog: {
        Title: <%= GetString("ConfirmTitle") %>,
        Message: <%= GetString("ConfirmMessage") %>
    }
    // .. etc.
}

这让我可以在 UI 的其他部分使用本地化的字符串

var okButton = $('<button>' + l18n.OK + '</button>')

但如前所述,仅将 JavaScript 放入 ASPX 页面 l18n.js.aspx 会导致警告并且不提供语法高亮显示。有没有更好的方法至少可以消除警告?当前的是

Generation of designer file failed: Exception from HRESULT: 0x80042929

如果重要的话,该项目是建立在 .Net 2.0 之上的

澄清

语言不是用户选择的,所以它不应该一直改变,我应该能够使用语言值作为 ETag,所以缓存应该不是什么大问题。从浏览器的 Angular 来看,我认为模板化的 JS 是一个静态文件,就像其他文件一样。如果我可以自动化的话,我只是不想单独声明 ~10 个静态 JS 文件。

最佳答案

ASPX 是一种 ASP.NET 窗体。它应该代表一个 Web 窗体,用户可以与在 ASPX 中运行更多代码进行交互。因此,ASPX 生命周期代表了其中的大部分内容。

对于 JS 等原始输出,您应该使用没有所有这些表单开销的 ASHX。

在您的特定情况下,我会考虑创建一组可以序列化为 JSON 的类。将序列化的 JSON 作为 ASHX 的输出发送。

关于.net - 在 ASP.Net 中使用模板生成 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/949618/

相关文章:

c# - 需要帮助在类中创建/使用集合(C#、ASP.Net、MVC)

javascript - 将数组从 Javascript 传递到 asp.net

c# - 如何确保每个 DIV 独立出现而不重叠

javascript - 使用内置 DOM 方法或 Prototype 从 HTML 字符串创建新的 DOM 元素

javascript - 如何使用js通过cookie发送参数

c# - 如何将抛出的异常映射到事件 ID 以进行日志记录?

.NET Linq to Objects 奇怪的行为

c# - 如何在 Blazor WebAssembly 项目中使用 C# 9?

c# - 无效的ID应该抛出什么异常?

javascript - 创建javascript var函数