ASP.NET - Заменять текстовые поля на метки, когда включено = False

StackOverflow https://stackoverflow.com/questions/1046319

Вопрос

Установка:Веб-форма с большим количеством элементов управления текстовыми полями.

Когда я устанавливаю для любого из свойств элемента управления TextBox Enabled значение False, я хотел бы "поменять" это текстовое поле на метку во время выполнения.Идея здесь в том, что если он в любом случае доступен только для чтения, не отображайте его в элементе управления, предназначенном для редактирования.

Я думаю, что это должно быть довольно простым и многоразовым, но каков наилучший способ сделать это?

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

Решение

Не уверен, что это лучший способ, я бы сделал пользовательский серверный элемент управления текстовым полем,

затем переопределите метод рендеринга, проверьте, доступен ли он только для чтения,

если он доступен только для чтения, то визуализируйте свои теги span так, как это делает label controls .

если нет, то пусть рендеринг базового ( текстового поля) вступит во владение...

public class SpecialTextbox : TextBox
{
    public override void RenderControl(HtmlTextWriter writer)
    {
        if (!this.ReadOnly)
        {
            base.RenderControl(writer);
        }
        else
        {
            writer.Write(string.Format("<span id=\"{0}\" class=\"{1}\">{2}</span>", 
                            this.ClientID, 
                            this.CssClass, 
                            this.Text));
        }
    }
}

Другие советы

Одним из возможных решений было бы создать новый элемент управления, расширяющий текстовое поле.Затем ваш специализированный элемент управления переопределит (части) кода рендеринга, в результате чего элемент управления будет отображаться аналогично Label при ReadOnly = true.

Другим способом было бы рассмотреть возможность использования адаптера управления.По сути, вы могли бы сделать то же самое, что рекомендует BigBlondeViking, но вы могли бы продолжить использовать обычный элемент управления asp: textbox в своем коде.Это будет намного проще для вас и других разработчиков.

Об адаптерах управления

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