在我的类库中,我嵌入了一些js和css文件,用于我的asp.net应用程序,如here所述的方法。 现在我想在js文件中放入一些c#代码,让它在生成的dll中编译。 它有可能吗?
示例:somefile.js
function foo()
{
var a = "<%= SOME_CONSTANT_DECLARED_OUTSIDE %>";
<% ... some conditional code %>
}
答案 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的方式。 还有其他一些方法(更优雅),但这不是问题:)