Asp.net 如何将一段VB.NET代码插入到ASPX页面并让其执行?
当放置在用户控件或ASPX页面中时,以下代码按预期执行Asp.net 如何将一段VB.NET代码插入到ASPX页面并让其执行?,asp.net,Asp.net,当放置在用户控件或ASPX页面中时,以下代码按预期执行 <script type="text/javascript"> (function() { if (someCondition) { if (<%=MyObject.IsActiveSession.ToString().ToLower() %>) { <% If (MyObject.IsLoggedIn) The
<script type="text/javascript">
(function() {
if (someCondition) {
if (<%=MyObject.IsActiveSession.ToString().ToLower() %>) {
<% If (MyObject.IsLoggedIn) Then %>
// Do some fancy stuff
<% End If %>
}
}
})();
</script>
(功能(){
如果(某些条件){
如果(){
//做些花哨的事
}
}
})();
当页面执行时,它将按预期呈现
是否有任何方法可以将此代码动态注入页面并让其执行
我尝试使用文字Web控件和惊奇惊喜,它输出代码:“
不以任何方式我认为是非常干净的,尽管我相信在代码DOS/P>中使用动态编译是可能的。 见:至少在社区中没有多少友好的模板引擎可用于.NET。去年,我遇到了同样的麻烦,我不得不保留客户维护的部分代码,因为他们想要以自己的方式格式化文本 我发现,在不进入任何第三方库的情况下,最简单的方法是使用
ASPX
rendering engine作为模板代码,但要易于管理
为模板创建一个ASPX
页面,例如~\Templates\LoggedInBlock.ASPX
和内容:
<script type="text/javascript">
(function() {
if (someCondition) {
if (<%=MyObject.IsActiveSession.ToString().ToLower() %>) {
<% If (MyObject.IsLoggedIn) Then %>
// Do some fancy stuff
<% End If %>
}
}
})();
</script>
现在,从您希望动态代码块追加的位置开始,它只是另一小块ASPX
页面:
Protected Sub Page_Load(sender As Object, e As EventArgs)
Dim templateName = "LoggedInBlock.aspx"
Using textWriter = New StringWriter()
Server.Execute(String.Format("~/TemplateRenderer.ashx?template={0}", templateName), textWriter)
dynamicCodeInjectPanel.InnerHtml = textWriter.ToString()
End Using
End Sub
礼貌:用于将C代码转换为VB代码。定义“动态”。代码从哪里来?很可能是数据库
Protected Sub Page_Load(sender As Object, e As EventArgs)
Dim templateName = "LoggedInBlock.aspx"
Using textWriter = New StringWriter()
Server.Execute(String.Format("~/TemplateRenderer.ashx?template={0}", templateName), textWriter)
dynamicCodeInjectPanel.InnerHtml = textWriter.ToString()
End Using
End Sub