Asp.net在类库中将js编译为嵌入资源,其中包含c#代码
在我的类库中,我嵌入了一些js和css文件,以便在我的asp.net应用程序中使用,如所述的方法。 现在我想在js文件中放入一些c#代码,并让它在生成的dll中编译。 可能吗 示例:somefile.jsAsp.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
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#视图模板解释器运行