【问题标题】:Accessing inner value of ASP.NET Web User Control访问 ASP.NET Web 用户控件的内部值
【发布时间】:2010-03-31 08:16:33
【问题描述】:

很惊讶我自己找不到这个,但无论如何。假设我像这样使用我的网络用户控件:

<myprefix:mytag userid="4" runat="server">Some fancy text</myprefix:mytag>

我如何能够从其代码隐藏中访问标签内的文本(“一些花哨的文本”)?期待它通过 this.Text、this.Value 或类似的东西暴露出来。

编辑: 我什至在尝试使用它的页面上收到以下警告: 元素“mytag”的开始标签和结束标签之间不允许有内容。

EDIT2:

public partial class mytag: UserControl
{
    public int ItemID { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {           
    }
}

【问题讨论】:

    标签: c# asp.net web-user-controls


    【解决方案1】:

    我假设您的自定义控件有一个名为Text 的字符串类型的属性。如果您随后将此属性声明为具有持久性模式“InnerDefaultProperty”,您应该会得到您要查找的内容。

    例如

    /// <summary>
    /// Default Text property ("inner text" in HTML/Markup)
    /// </summary>
    [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
    public string PropertyTest
    {
        get
        {
            object o = this.ViewState["Text"];
            if (o != null)
            {
                return (string)o;
            }
            return string.Empty;
        }
        set
        {
            this.ViewState["Text"] = value;
        }
    }
    

    编辑: 为了避免“不允许的文字内容”,您必须通过将 [ParseChildren(true, "PropertyTest")] 添加到您的 class 定义来帮助解析器(请参阅 MSDN)。

    当然你需要一个可写的属性(即它需要一个我之前为了简短而省略的设置器)。

    【讨论】:

    • 使用这个即时通讯得到以下 解析器 错误:“ASP.mytag_ascx”中不允许有文字内容(“一些花哨的文本”)。
    【解决方案2】:

    只需在类前添加一行 ([ParseChildren(true, "TestInnerText")]),并添加一个名为“TestInnerText”的属性。创建您选择的任何控件,我创建 LiteralControl 只是为了显示内部 html 视图。

    "TestInnerText" - 只是我给的一个临时名称,您可以使用您选择的任何属性名称。

    [ParseChildren(true, "TestInnerText")]
    public partial class mytag : UserControl
    {
        public string TestInnerText
        {
            set
            {
                LiteralControl lc=new LiteralControl();
                lc.Text=value;
                this.Controls.Add(lc);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      相关资源
      最近更新 更多