Многоуровневая привязка к свойству в пользовательском элементе управления ASP - PullRequest
0 голосов
/ 16 января 2019

У меня сейчас есть пользовательский элемент управления

class MyControl : CompositeControl {
    Foo Entity { get; set; }
    string PropertyName { get; set;}
    //...
    protected override void OnLoad(EventArgs e)
    {
        var v = typeof(Foo).GetProperty(PropertyName).GetValue(Entity);
        //...
        var _ = Entity.OtherProperty;
        //...
    }
}

//and a class

class Foo {
    string Bar { get ;set; }
    string OtherProperty { get; set; }
}

На странице я могу использовать этот элемент управления как

<MyControl id="myControl" Entity="<%# MyEntity %>" PropertyName="Bar"></MyControl>

где конечно MyEntity является защищенным свойством на странице

protected Foo MyEntity { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack) return;

    MyEntity = new Foo { Bar = "Hello World" OtherProperty="..." };
}

То, что я хотел бы сделать, это использовать как

<MyControl id="myControl" Property="<%# MyEntity.Bar %>" ></MyControl>

Но, таким образом, MyControl все еще осознает и сущность (объект Foo), и PropertyName ("Bar").

Я все еще должен быть в состоянии управлять

        var v = typeof(Foo).GetProperty(PropertyName).GetValue(Entity);
        //...
        var _ = Entity.OtherProperty;

или аналогичный.

...