如何在我的Html Helper中调用RenderAction?

时间:2010-02-17 23:50:32

标签: .net asp.net asp.net-mvc html-helper

我正在扩展htmlhelper。但我不能称之为它的渲染。

 using System.Text;
 using System.Web.Mvc;
 using System.Web.Mvc.Html;
 public static class ViewHelpers
    {
        public static string Text(this HtmlHelper htmlHelper, string name, object value, bool isEditMode)
        {
           htmlHelper.RenderAction(...) //cannot be called
        }
    }

我怎样才能调用RenderAction ???

3 个答案:

答案 0 :(得分:3)

CoffeeCode走在正确的轨道上,但要包含的名称空间应该是 System.Web System.Web.Mvc System.Web.Mvc。 HTML

using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Resources;
using System.Web.Routing;
using System.Text.RegularExpressions;

namespace xxx.yyy.Helpers {
    public static class HelperView {
        public static void RenderHeader(this HtmlHelper helper) {
            helper.RenderAction("Header", "Default", new { pageAction = helper.ViewContext.RouteData.Values["action"].ToString() });
        }
    }
}

http://msdn.microsoft.com/en-us/library/ee703490(v=vs.108).aspx

答案 1 :(得分:2)

@CoffeeCode,你能解释一下你为什么要这样做吗?

一般来说,你会调用一个助手将html作为字符串返回,然后在页面中呈现。

想要在帮助器中渲染它似乎有点奇怪。至少对我而言。

修改

我认为这里的帮手对你来说可能是错误的。如果你想访问列表,但是你不想将它传递给视图,那么帮助是错误的地方。你可能想创建一个获取列表的类,用它做一些事情,然后返回html。

答案 2 :(得分:-2)

解决方案非常简单。
添加using Microsoft.Web.Mvc;
并且在调用RenderAction时,它会将html字符串直接写入视图