访问ASP.NET Web用户控件的内部值

Fab*_*ian 2 c# asp.net web-user-controls

很惊讶,我自己也找不到这个,但无论如何.假设我使用我的网络用户控件,如下所示:

<myprefix:mytag userid="4" runat="server">Some fancy text</myprefix:mytag>
Run Code Online (Sandbox Code Playgroud)

如何从代码隐藏("一些花哨的文本")中访问标签内的文本?期待它通过this.Text,this.Value或类似的东西暴露.

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

EDIT2:

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

sch*_*and 10

我假设您的自定义控件具有一个名为Textstring类型的属性.如果您然后声明此属性具有持久性模式"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;
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑: 要避免"不允许使用文字内容",您必须通过添加[ParseChildren(true, "PropertyTest")]定义来帮助解析器(请参阅MSDN).

当然,你需要一个可写的属性(即它需要一个我之前为了简短而省略的setter).