自定义 Html 助手问题

custom Html helper issue

我需要将 webform 的一些用户控件构建转换为 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>");
        }
    }

或者还有其他方法吗?

以及如何在视图中使用它?

要回答您的第一个问题,请将 protected void BeginWidget() 更改为 protected override void BeginWidget()

关于你的第二个问题,我不熟悉 HtmlWidget 基地 class。我过去看到小部件的方式是调用 @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()

的区别