我需要在服务器上生成 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/