繁体   English   中英

Asp.net将类库中的js编译为内嵌c#代码的嵌入式资源

[英]Asp.net compile js in class library as embedded resource with c# code inside

在我的类库中,我嵌入了一些js和css文件,用于我的asp.net应用程序,就像在这里描述的方法一样。 现在我想在js文件中放入一些c#代码,让它在生成的dll中编译。 它可能吗?

示例:somefile.js

function foo() 
{
    var a = "<%= SOME_CONSTANT_DECLARED_OUTSIDE %>";
    <% ... some conditional code %>
}

Javascript是客户端SIDE,C#是服务器端。

你不能在Javascript中运行C#

ASP.NET不会编译,也不会在* .js文件中查找托管代码(编译代码,如C#代码)。 因此,当您在js文件中放入一些C#代码时,该代码将无法用作C#代码(客户端将尝试将其用作javascript代码)。

但有一种解决方法 - ASP.NET 确实在aspx文件呈现C#代码。 所以你可以在JS函数中嵌入一些C#代码,只要这个函数位于aspx文件中(在脚本标记内)。

文档告诉你如何添加变量..-

在UpdatePanelAnimation.js中,您有这行代码

BorderAnimation = function(color) {
    this._color = color;
}

然后自动设置。

Dim script As String = String.Format( _
               CultureInfo.InvariantCulture, _
               "Sys.Application.add_load(function(sender, args) {{var {0}_borderAnimation = new BorderAnimation('{1}');var panelElement = document.getElementById('{0}');if (args.get_isPartialLoad()) {{{0}_borderAnimation.animate(panelElement);}}}});", _
               updatePanel.ClientID, _
               ColorTranslator.ToHtml(BorderColor))


        ScriptManager.RegisterStartupScript( _
            Me, _
            GetType(UpdatePanelAnimationWithClientResource), _
            ClientID, _
            script, _
            True)

因此,格式化的{1}将替换为服务器端的BorderColor。 您现在可能希望像这样更新JS构造函数

BorderAnimation = function(color,otherValue){this._color = color; this._otherValue = otherValue}

现在你对服务器端格式化做同样的事情但是你做了

...
var {0}_borderAnimation = new BorderAnimation('{1}', '{2}')
...

这就是ASP.NET将Backend与前端“连接”的方式。 还有其他一些方法(更优雅),但这不是问题:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM