自定义Html助手问题

时间:2015-07-17 19:23:49

标签: asp.net-mvc html-helper

我需要将webform的一些用户控件构建转换为html助手。

例如,我需要将下面的自定义控件转换为html helper:

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

我该怎么做?

我是这样做的,但我得到一个错误,说DisclaimerWidget没有实现继承的抽象成员&#39; project1.Helpers.HtmlWidget.BeginWidget()&#39;

 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>");
        }
    }

还是有另一种方法可以做到这一点?

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

1 个答案:

答案 0 :(得分:1)

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

至于你的第二个问题,我不熟悉HtmlWidget基类。我过去看过小部件的方式是调用@Html.Partial()或使用Html.Action()。我相信有一些开源项目也会为小部件添加HtmlHelper扩展名。

http://www.scala-lang.org/old/node/137是介绍Html.Partial()

的绝佳资源

http://mvc4beginner.com/Tutorial/MVC-Partial-Views.html是一个很好的资源,可以解释Html.Action()及其与Html.Partial()的区别