![](/img/trans.png)
[英]Accessing value from the controls within a dynamically loaded web user control (asp.net c#)
[英]Accessing inner value of ASP.NET Web User Control
很驚訝,我自己也找不到這個,但無論如何。 假設我使用我的網絡用戶控件,如下所示:
<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)
{
}
}
我假設您的自定義控件有一個名為Text
of string的屬性。 如果您然后聲明此屬性具有持久性模式“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")]
到類定義來幫助解析器(請參閱MSDN )。
當然,你需要一個可寫的屬性(即它需要一個我之前為了簡短而省略的setter)。
只需在類之前添加一行([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)
{
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.