mez*_*oid 3 c# user-controls default-value custom-properties
我在页面上定义了一个用户控件,如下所示:
<uc:MyUserControl ID="MyUserControl" runat="server" Visible="true" />
Run Code Online (Sandbox Code Playgroud)
我想在具有自定义属性的不同页面上重用相同的控件,如下所示:
<uc:MyUserControl ID="MyUserControl" runat="server" Visible="true"
MyCustomProperty="MyCustomText" />
Run Code Online (Sandbox Code Playgroud)
MyCustomProperty的目的是将MyUserControl中的某些文本控制为我指定的任何文本.
对于第一种情况,我希望文本是"查看",对于第二种情况,我希望它是"MyCustomText".
在我的用户控件中,我有以下代码来定义属性:
[DefaultValue("View")]
public string MyCustomProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
我还有以下代码来更新基于属性的文本:
LinkButton buttonSelect = e.Item.FindControl("ButtonSelect") as LinkButton;
if(buttonSelect != null) buttonSelect.Text = MyCustomProperty;
Run Code Online (Sandbox Code Playgroud)
实际发生的情况是,在第一种情况下未提供自定义属性时,MyCustomProperty == null.
我试图通过添加DefaultValue属性来指定默认值应为"View",但它没有我想要的影响.
谁能发现我做错了什么?
该DefaultValueAttribute所使用的可视化设计器和代码生成器标识默认值,使他们能够更智能地生成代码.在Visual Studio中,当属性返回的值与属性中声明的值不同时,此属性将导致属性以粗体显示.
DefaultValueAttribute实际上并没有为您设置属性的默认值.为此,只需在构造函数中指定合适的默认值即可.在你的情况下:
public partial class MyUserControl
{
public MyUserControl()
{
MyCustomProperty = "View";
}
...
}
Run Code Online (Sandbox Code Playgroud)
此外,请注意,您编码的属性将无法在Postbacks中存活.如果这是往返之间的重要行为,请务必将其添加到查看状态!
| 归档时间: |
|
| 查看次数: |
2545 次 |
| 最近记录: |