2016-04-08 55 views
1

,当我需要一些值设置为Javacript,或代码的任何其他部分,我通常使用:ASP.NET动态生成HTML服务器控件

<script> 
    <%# SomeFunction() %> 
</script> 

,这也适用于在HTML文件正文,像...

<somehtmltag property="<%# SomeFunction2() %>"> 

而在后面的代码中,我创建了函数,返回一个字符串,所有必要的代码。

如果我添加一些参数到用户控件,如:

<ts:PeopleCard ID="us" runat="server" Visible="<%# IsVisivle() %>" /> 

它也可以,但我尝试创建整个用户控制它不工作。

<%# AddUserControl() %> 

Function AddUserControl() as String 
    Return "<ts:PeopleCard ID=""us"" runat=""server"" Visible=""true"" />" 
End Function 

据我所知,这是行不通的,因为这个代码必须由服务器处理,以便在实际代码中进行转换。

最终的HTML,它表明:

<ts:PeopleCard ID="us" runat="server" Visible="true" /> 

当它不应该,它应该显示由服务器处理的HTML \ CSS。

所以我的问题是,是否有可能通过这种方式创建控件?在代码后面更改其内容后,是否有可能强制ASP.NET“重新处理”页面?

我知道还有其他几种方法可以做到这一点。包括,在conde后面创建用户控件。

,但我需要知道,如果能够做到这一点的方式...

+3

这是无法完成的。 – giammin

回答

0

通常你有一个父标记是RUNAT服务器,然后您可以添加您自己的对象吧。

Dim newTag as New PeopleCard 
newTag.Visible = true 
pnl.Controls.Add(newTag) 

我做的另一种选择是,过去是一个RenderMethod添加到控制。每个控件都有一个SetRenderMethodDelegate函数,它允许您直接写入HtmlTextWriter。这不会为您自己创建的控件创建对象。