[英]How do I set a default value for a ASPX UserControl property?
我在頁面上定義了一個用戶控件,如下所示:
<uc:MyUserControl ID="MyUserControl" runat="server" Visible="true" />
我想在具有自定義屬性的不同頁面上重復使用相同的控件,如下所示:
<uc:MyUserControl ID="MyUserControl" runat="server" Visible="true"
MyCustomProperty="MyCustomText" />
MyCustomProperty的目的是控制MyUserControl中的某些文本,使其成為我指定的文本。
對於第一種情況,我希望文本為“查看”,對於第二種情況,我希望文本為“ MyCustomText”。
在我的用戶控件中,我具有以下代碼來定義屬性:
[DefaultValue("View")]
public string MyCustomProperty { get; set; }
我也有以下代碼根據屬性更新文本:
LinkButton buttonSelect = e.Item.FindControl("ButtonSelect") as LinkButton;
if(buttonSelect != null) buttonSelect.Text = MyCustomProperty;
實際發生的情況是,在第一種情況下未提供custom屬性時,則MyCustomProperty == null。
我試圖通過添加DefaultValue屬性來指定默認值應為“ View”,但它沒有達到我想要的效果。
誰能發現我在做什么錯?
可視設計器和代碼生成器使用DefaultValueAttribute
來標識默認值,以便他們可以更智能地生成代碼。 在Visual Studio中,當屬性返回的值與該屬性中聲明的值不同時,該屬性將使該屬性以粗體顯示。
DefaultValueAttribute
實際上並未為您設置屬性的默認值。 為此,只需在構造函數中指定合適的默認值即可。 在您的情況下:
public partial class MyUserControl
{
public MyUserControl()
{
MyCustomProperty = "View";
}
...
}
另外,請注意,您編碼的屬性將無法在回發中幸存。 如果這是往返之間的重要行為,請確保將其添加到查看狀態!
如何顯式設置屬性值而不是使用DefaultValue屬性?
private string _MyCustomProperty = "View";
public string MyCustomProperty
{
get
{
return _MyCustomProperty;
}
set
{
_MyCustomProperty = value;
}
}
如果您查看MSDN中有關DefaultValue
的注釋,您將了解您做錯了什么-
DefaultValueAttribute
不會導致成員使用該屬性的值自動初始化。 您必須在代碼中設置初始值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.