ASP.NET User Control: невозможно инициализировать свойство пользовательского элемента управления с помощью Eval ("...") - PullRequest
4 голосов
/ 23 февраля 2010

Я разработал пользовательский элемент управления. Он содержит публичное свойство "CurrentValue". Когда я пытаюсь инициализировать свойство с помощью выражения Eval, присваивается нулевое значение.

// В приведенном ниже коде назначение метки в порядке, присвоение пользовательского элемента управления 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; }
    }
    (...)
}

1 Ответ

0 голосов
/ 23 февраля 2010

Следующий код работает для меня. Когда вы используете _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);
    }

}

Страница

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...