我自己写了个webcontrol,在使用时在aspx页面上用<%=MyVar%>给它的属性上赋值,却发现数据不是按照希望的执行代码后显示,而是将"<%=MyVar%>"原样输出到IE上。请问如何解决。代码如下Aspx Page
<cc1:Test ID="Test1" runat="server" Text='Value <%= "123" %>' />Test控件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace MyCode
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:Test runat=server></{0}:Test>")]
    [ParseChildren(true)]
    
    public class Test : WebControl
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }            set
            {
                ViewState["Text"] = value;
            }
        }        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(Text);
        }
    }
}输出结果
<span id="Test1">Value <%= "123" %></span>

解决方案 »

  1.   

    <cc1:Test ID="Test1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"123")%>' />
      

  2.   

    <cc1:Test ID="Test1" runat="server" Text='Value <%= "123" %>' />
    改为:
    <cc1:Test ID="Test1" runat="server" Text='<%="Value" + "123" %>' />
      

  3.   

    其实昨天在发这个问题之前就已经找到问题所在了,发上来只是希望能让自己加深印象,同时让其他人碰到同样问题有东西可以看在控件(包括.net自己的control)的属性中可以使用<%%>标签,但是前后不得有其他任何字符,否则就会被当成一个字符串处理。