簡體   English   中英

如何為ASPX UserControl屬性設置默認值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM