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

时间:2014-05-07 08:08:52

标签: c# javascript asp.net .net embedded-resource

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

示例:somefile.js

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

3 个答案:

答案 0 :(得分:1)

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

您无法在Javascript中运行C#

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

在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和Frontend的方式。 还有其他一些方法(更优雅),但这不是问题:)