2010-02-23 5 views
4

J'ai conçu un contrôle utilisateur. Il contient une propriété publique "CurrentValue". Lorsque j'essaie d'initialiser la propriété à l'aide d'une expression Eval, une valeur null est affectée.Contrôle utilisateur ASP.NET: impossible d'initialiser une propriété de contrôle utilisateur à l'aide d'Eval ("...")

// Dans le code ci-dessous, l'attribution des étiquettes est OK, affectation de contrôle utilisateur RatingNull obtenir null

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

Si j'affecté directement une valeur (c.-à-CurrentValue = "5"), fonctionne le contrôle de l'utilisateur bien.

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

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

Répondre

0

Le code suivant fonctionne pour moi. Quand utilisez-vous le champ _CurrentValue?

UserControl

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); 
    } 

} 

page

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 Markup

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