【问题标题】:ASP.NET User Control : can't initialize a user control property using Eval("...")ASP.NET 用户控件:无法使用 Eval("...") 初始化用户控件属性
【发布时间】:2010-02-23 09:46:35
【问题描述】:

我设计了一个用户控件。它包含一个公共属性“CurrentValue”。 当我尝试使用 Eval 表达式初始化属性时,分配了一个空值。

// 在下面的代码中,标签赋值OK,RatingNull用户控件赋值为空

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("Difficulty") %>'
        <uc1:RatingNull ID="RatingNull1" runat="server" CurrentValue='<%# Eval("Difficulty") %>' />
    </ItemTemplate>

如果我直接分配了一个值(即 CurrentValue="5"),用户控制就可以正常工作。

public partial class RatingNull : System.Web.UI.UserControl
{
    private string _CurrentValue;

    public string CurrentValue
    {
        get { return _CurrentValue; }
        set { _CurrentValue = value; }
    }
    (...)
}

【问题讨论】:

    标签: c# asp.net user-controls


    【解决方案1】:

    以下代码对我有用。什么时候使用_CurrentValue 字段?

    用户控制

    public partial class Test1 : System.Web.UI.UserControl
    {
    
        public string CurrentValue
        {
            get { return (string)ViewState["CurrentValue"] ?? string.Empty; }
            set { ViewState["CurrentValue"] = value; }
        }
    
        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);
    
            writer.Write(this.CurrentValue);
        }
    
    }
    

    页面

    protected void Page_Load(object sender, EventArgs e)
    {
        var ds = new[]
        {
            new { FirstName = "F1", LastName = "L1" },
            new { FirstName = "F2", LastName = "L2" },
        };
    
        DataList1.DataSource = ds;
        DataList1.DataBind();
    }
    

    HTML 标记

    <asp:DataList ID="DataList1" runat="server">
        <ItemTemplate>
            <uc1:Test ID="Test1" runat="server" CurrentValue='<%# Eval("FirstName") %>' />
        </ItemTemplate>
    </asp:DataList>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-15
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多