视图外的MVC HtmlHelper

时间:2011-03-18 17:00:34

标签: asp.net-mvc asp.net-mvc-3 razor

我有一个课程,并在asp.net mvc3的剃刀视图中调用它。 如何将HtmlHelper从View传递给我的班级? 我可以做到这一点,但后来我没有所有的方法,例如“RenderAction”和“RenderPartial” 不见了。

更新

我想调用部分视图,因为它更容易实现(由最终用户),并且不需要完整编译我的网站。

请注意,以下示例并不是我想要做的事情;)我认为我的例子很愚蠢,但它总体上显示了我想要做的事情。

的ViewPage: HtmlString str = new Renderer().Render(this.Html)

代码(后面):

  public class Renderer
    {
        HtmlHelper _html;

        public Renderer(HtmlHelper html)
        {
            this._html = html;
        }

        public HtmlString Render()
        {
            string result = string.Empty;
            // getting html from a partial view
            return new HtmlString(result);
        }
    }

3 个答案:

答案 0 :(得分:1)

问题是缺少使用。

using System.Web.Mvc.Html;

使方法可见其他所有内容都是不必要的。

答案 1 :(得分:0)

RenderAction()RenderPartial()HtmlHelper的扩展方法,您需要包含System.Web.MVC命名空间。

<强>更新

您可以使用@Html.RenderPartial("view")

或者您可以创建HtmlHelper

的扩展方法
public static class HtmlHelperExtensions {

  public static IHtmlString MyRenderer(this HtmlHelper helper) {

    string html = String.Empty;
    //generate HTML here

    return new MvcHtmlString(html);

  }

}

答案 2 :(得分:0)

除非您的课程专门用于演示功能,否则您真的不希望在课程中执行演示逻辑。在这种情况下,您可能只想将其作为HtmlHelper的扩展方法。

请参阅以下资源:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=406

http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs