Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net在类库中将js编译为嵌入资源,其中包含c#代码_C#_Javascript_Asp.net_.net_Embedded Resource - Fatal编程技术网

Asp.net在类库中将js编译为嵌入资源,其中包含c#代码

Asp.net在类库中将js编译为嵌入资源,其中包含c#代码,c#,javascript,asp.net,.net,embedded-resource,C#,Javascript,Asp.net,.net,Embedded Resource,在我的类库中,我嵌入了一些js和css文件,以便在我的asp.net应用程序中使用,如所述的方法。 现在我想在js文件中放入一些c#代码,并让它在生成的dll中编译。 可能吗 示例:somefile.js function foo() { var a = "<%= SOME_CONSTANT_DECLARED_OUTSIDE %>"; <% ... some conditional code %> } 函数foo() { var a=“”; } Jav

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

示例:somefile.js

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

Javascript是客户端,C是服务器端


您不能在Javascript中运行C#

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

但有一个解决办法-
ASP.NET在aspx文件中呈现C代码。因此,您可以在JS函数中嵌入一些C#代码,只要该函数位于aspx文件中(在脚本标记中)。

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

在UpdatePanimation.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=函数(颜色、其他值){ 这个._color=color; 这个。_otherValue=otherValue }

现在您可以对服务器端格式化执行相同的操作,但接下来就可以执行了

...
var {0}_borderAnimation = new BorderAnimation('{1}', '{2}')
...
这就是ASP.NET如何“连接”后端和前端的方式。
还有其他一些方法(更优雅)可以做到这一点,但这不是问题:)

这并不完全正确。正如你所说,你不能在HTML中使用C。但是ascx文件是一个HTML文件,但通过C#视图模板解释器运行