Вопрос

Я пытаюсь выяснить, как создать элемент управления веб-сервером, который в основном является развертыванием.

Желание - автоматически создать свойство на элементе управления, когда он создан в разметке ASPX.

Например:

<x:ExpandoControl someProperty="a value"></x:ExpandoControl>
.

где атрибут какой-то не существует как свойство на элементе управления.

Я также должен упомянуть, что я не нужен какой-либо функционал управления или Webcontrol.Мне просто нужно быть в состоянии объявить его в разметке с помощью Runat= «Сервером» (который в самом себе может потребовать его контроль, по крайней мере, это то, что я думаю).

Это возможно?Если так, как я могу начать?

большое спасибо.

Это было полезно?

Решение

Я думаю, что ваша первая ставка будет реализовать ITTRIBUTEACCESSOR :

public interface IAttributeAccessor
{
    string GetAttribute(string key);
    void SetAttribute(string key, string value);
}
.

Пашнер Page ASP.NET вызывает ITTRIBUTEACCESSOR.SetAttribute для каждого атрибута, он не может отобразить общественное свойство.

Так, возможно, вы можете начать с

public class ExpandoControl : Control, IAttributeAccessor
{
    IDictionary<string, object> _expando = new ExpandoObject();

    public dynamic Expando
    {
        {
            return _expando;
        }
    }

    void IAttributeAccessor.SetValue(string key, string value)
    {
        _expando[key] = value;
    }

    string IAttributeAccessor.GetValue(string key)
    {
        object value;
        if (_expando.TryGetValue(key, out value) && value != null)
            return value.ToString();
        else
            return null;
    }
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top