【问题标题】:User Control losing properties on postback用户控件在回发时丢失属性
【发布时间】:2011-07-27 10:39:03
【问题描述】:

我有一个具有许多属性的用户控件。此用户控件放置在 GridView 的 TemplateField 中,并且属性是从网格的数据源进行数据绑定的。在用户控件上,我有一些执行操作的 LinkBut​​ton,使用一些属性作为属性(例如,我传入一行的 ID)

值可以正常输入,但是一旦在用户控件上单击 LinkBut​​ton,属性就会重置为 null,因此 LinkBut​​ton 操作不起作用。什么可能导致这种情况?我已确保 ViewState 已启用。

编辑:一些代码:

属性:

public long? _InvoiceID;
[PersistenceMode(PersistenceMode.Attribute)]
[Bindable(BindableSupport.Yes)]
public long? InvoiceID {get { return _InvoiceID; } set { _InvoiceID = value; } }

【问题讨论】:

  • 只有你的代码才能说明问题,尝试发布它
  • 我遇到的常见问题,我在无法访问 Internet 的机器上编写代码,因此无法复制和粘贴。我现在会输入一些内容

标签: c# asp.net user-controls


【解决方案1】:

尝试将传递给用户控件的值保存到用户控件中的隐藏字段中,并在单击 LinkButton 时读取隐藏字段值

更新

变量long? _InvoiceID 是无状态的,所以你可以试试这个

[PersistenceMode(PersistenceMode.Attribute)]
[Bindable(BindableSupport.Yes)]
public long? InvoiceID 
{
   get { 
         return (long?)_InvoiceIDHiddenn.Value; 
       } 
   set {
          _InvoiceIDHiddenn.Value = value; 
       } 
}

【讨论】:

  • 我是这么想的,但如果可能的话,我想避免在用户控件上添加其他控件以避免任何多余的标记,因为这将出现在每个 GridView 行上
  • 你是对的,但恐怕还有另一种方法。但如果可以在用户控制之外创建LinkButton
  • 我最后选择了这个选项,现在效果很好。额外的语法对性能没有任何影响,所以一切都很好:) 非常感谢
猜你喜欢
  • 2010-12-27
  • 2010-11-18
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多