我正在寻找2天来完成以下任务: 我想要一个自定义控件,它将采用内联文本+代码块。
我想要实现的目标:
<asp:MyCustom runat="server">
Hello there, <%= User.Name%>
</asp:MyCustom>
以下是我目前的情况:
[ParseChildren(true), PersistChildren(true)]
public class MyCustom
{
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public ITemplate Text { get; set; }
//Constructor
public MyCustom()
{
Text = new StringITemplate(text);
}
}
最重要的是,控件实际上是从“UserControl”继承的父用户控件列表的成员,它会覆盖Render方法。此外,还有一个StringITemplate类,它允许将纯字符串分配给ITemplate属性。
最终,我希望实现以下目标:
<asp:MyCustomItemControl runat="server">
<Items>
<asp:Item>Hello there, <%= User.Name%></asp:Item>
<asp:Item><%= SomeOtherString%></asp:Item>
</Items>
</asp:MyCustom>
现在,如果我的第一个请求确实有效,我会很高兴。看起来像抓住web /用户/自定义/服务器的荒野 - asp.net中的控件及其属性。
我现在所拥有的完整代码可以在这里查看: http://pastebin.com/3gic2Y0u
感谢阅读:)
答案 0 :(得分:2)
我只是在找这样的东西。
我在这里找到了这个答案,它为我解答了这个问题:
How do I make my ASP.NET server control take an embedded code block as a property value?
答案摘要是:
<%=
类型代码块旨在直接提供给streamwriter。相反,请使用<%#
代码块并包含
This.DataBind()
在Page_Init
类的Item
。