Asp.net 如何将一段VB.NET代码插入到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

当放置在用户控件或ASPX页面中时,以下代码按预期执行

<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