Рендер самозакрывающихся Tag в ASP.NET пользовательский элемент управления, полученный от контроля

голоса
4

Я работаю на Facebook FBML контролирует библиотеку и хотел бы создать мой FBML контролирует несколько узорных как библиотеку ASP.NET WebControls. У меня есть базовый класс, который обрабатывает рендеринг по умолчанию; вот мой метод визуализации:


        protected override void Render(HtmlTextWriter writer)
        {
            AddAttributesToRender(writer);

            if (UseXfbmlSemantics)
            {
                writer.RenderBeginTag(ElementName);
                writer.EndRender();
                writer.RenderEndTag();
            }
            else
            {
                writer.RenderBeginTag(ElementName);
                writer.RenderEndTag();
            }
        }

То, что я хотел бы для рендеринга, чтобы быть изменен на основании UseXfbmlSemantics - если это правда, он должен оказывать, например:

<fb:name uid=10300399458></fb:name>

Когда это ложь, он должен сделать с самозакрывающимся тегом:

<fb:name uid=10300399458 />

Я могу получить «истинное» условие работать почти правильно, но Самозапирающийся тег кажется несовместимым с Render- набором методов. К сожалению, если это так, это также означает, что модель AddAttributesToRender не будет работать, либо. Что это на самом деле производит это:


        <fb:name uid=10300399458>

        </fb:name>

Как я могу получить HtmlTextWriter (или которые HtmlTextWriter мне нужно использовать), чтобы сделать это делают самостоятельно закрывающий тег? Или, по крайней мере, как я могу сделать это не делает, что временное пространство (так что открывающие и закрывающие теги сразу рядом друг с другом)?

Задан 05/11/2008 в 23:32
источник пользователем
На других языках...                            


4 ответов

голоса
6

Это должно вас происходит - это будет отображаться как <fb:name uid="00101010101"/>. Кроме того, можно переопределить RenderBeginTag, RenderContents, RenderEndTag. В зависимости от того, что вы там делаете , может быть какие - то другие вещи , происходящие в RenderControl , что вам нужно. Вы также можете посмотреть в использовании ControlAdapter, это может дать вам лучшее разделение функций управления VS управления HTML письма.

public  class FbName:System.Web.UI.WebControls.WebControl
{

    protected override string TagName
    {
        get
        {
            return "fb:name";
        }
    }

    public override void RenderControl(HtmlTextWriter writer)
    {  
        RenderBeginTag(writer);// render only the begin tag.
        //base.RenderContents(writer);
        //base.RenderEndTag(writer);
    }

    public override void RenderBeginTag(HtmlTextWriter writer)
    {
        writer.Write("<" + this.TagName);
        writer.WriteAttribute("uid", "00101010101");
        writer.Write("/>");

    }
}

Джейсон

Ответил 06/11/2008 в 22:44
источник пользователем

голоса
3

Я бы рекомендовал использовать HtmlTextWriter константы:

    protected override void Render(HtmlTextWriter writer)
    {
        AddAttributesToRender(writer);
        writer.Write(HtmlTextWriter.TagLeftChar); // '<'
        writer.Write(this.TagName);
        writer.Write(HtmlTextWriter.SpaceChar); // ' '
        writer.WriteAttribute("uid", "00101010101");
        writer.Write(HtmlTextWriter.SpaceChar); // ' '
        writer.Write(HtmlTextWriter.SelfClosingTagEnd); // "/>"
    }
Ответил 29/08/2011 в 13:41
источник пользователем

голоса
7

Так как это верхний SO вопрос, который появляется при поиске «HtmlTextWriter закрывающихся тэгу», это для тех, кто приходит сюда, что хочет знать, как это сделать:

writer.WriteBeginTag("tag");
writer.WriteAttribute("attribute", "attribute value");
// ... add other attributes here ...
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
Ответил 12/09/2014 в 18:22
источник пользователем

голоса
-1

если вы используете Visual Studio идут следующие шаги:

Инструменты ---> Параметры ---> Текстовый редактор ---> HTML ----> Форматирование ---> удалить Авто вставить закрывающий тег

Ответил 26/02/2015 в 08:37
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more