пользовательская проблема с помощником HTML

Мне нужно преобразовать некоторую сборку пользовательского элемента управления для веб-формы в помощники html.

Так, например, мне нужно преобразовать пользовательские элементы управления ниже в помощник html:

public class DisGrid : Panel
    {
        protected override void Render(HtmlTextWriter writer)
        {
            writer.WriteLine("<div class=\"disgrid\"><div>");
            base.Render(writer);
            writer.WriteLine("</div></div>");
        }
    }

Как я могу это сделать?

Я сделал это таким образом, но получил сообщение об ошибке, в котором говорится, что DisclaimerWidget не реализует унаследованный абстрактный член «project1.Helpers.HtmlWidget.BeginWidget()»

 public class DisGridWidget : HtmlWidget
    {

        public DisGridWidget(ViewContext viewContext) : base(viewContext)
        {
            this.BeginWidget();
        }

        protected void BeginWidget()
        {
            var sb = new StringBuilder();
            sb.AppendFormat("<div class='disgrid'><div>");


            this._textWriter.WriteLine(sb.ToString());
        }

           protected override void EndWidget()
        {
            this._textWriter.WriteLine("</div></div>");
        }
    }

или есть другой способ сделать это?

и как его использовать в представлении?


person YosrJ    schedule 17.07.2015    source источник
comment
Попробуйте изменить protected void BeginWidget() на protected override void BeginWidget().   -  person Middas    schedule 17.07.2015
comment
@Middas исправил ошибку. спасибо. а как я могу использовать помощника в представлении?   -  person YosrJ    schedule 20.07.2015


Ответы (1)


Чтобы ответить на первый вопрос, измените protected void BeginWidget() на protected override void BeginWidget().

Что касается вашего второго вопроса, я не знаком с базовым классом HtmlWidget. Раньше я видел виджеты, сделанные с помощью вызова @Html.Partial() или использования Html.Action(). Я считаю, что есть некоторые проекты с открытым исходным кодом, которые также добавляют расширение HtmlHelper для виджетов.

http://mvc4beginner.com/Tutorial/MVC-Partial-Views.html отличный ресурс для знакомства с Html.Partial()

http://pratapreddypilaka.blogspot.com/2011/11/htmlpartial-vs-htmlaction-mvc-razor.html — отличный ресурс, объясняющий Html.Action() и его отличия от Html.Partial().

person Middas    schedule 20.07.2015