[英]ASP.NET User Control : can't initialize a user control property using Eval(“…”)
我設計了一個用戶控件。 它包含一個公共屬性“CurrentValue”。 當我嘗試使用Eval表達式初始化屬性時,會分配一個空值。
//在下面的代碼中,標簽賦值是OK,RatingNull用戶控件賦值為null
<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; }
}
(...)
}
以下代碼適用於我。 你什么時候使用_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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.