2010-02-17 24 views
2

im扩展htmlhelper。但它无法调用它的renderaction。如何在我的Html Helper中调用RenderAction?

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?

+1

@CoffeeCode,进一步反对我的文章发表的留言,你不能传递域模型,以你的助手,然后使用它?对于你想要做什么以及你是否有权访问元素列表或者是否想操纵列表,我有点朦胧。 – griegs 2010-02-18 00:07:59

+0

我只需要访问元素列表 – CoffeeCode 2010-02-18 00:38:58

+0

看到我的编辑我的回答 – griegs 2010-02-18 00:47:39

回答

-2

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

+0

RenderAction不返回字符串,而是直接写入Response。所以,尽管你在这种情况下可能会发挥作用,但这只是侥幸。 – 2010-12-03 03:45:53

2

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

一般而言,您会调用一个帮助器将html作为字符串返回,然后在页面中呈现该字符串。

想要在帮手中呈现它似乎有点不可思议。无论如何,至少对我来说。

编辑

我觉得这里一个帮手可能是错误的东西给你。如果你想访问列表,但你不想将它传递给视图,那么助手是错误的地方。你可能想要创建一个接受这个列表的类,做一些事情,然后返回html。

+0

它只是我有一个操作,返回一个视图结果,这是一个下拉列表。我不想将元素列表传递给视图,因为我希望它尽可能简单。我没有访问我的htmlhelper中的域模型。所以即时尝试调用RenderAction。 – CoffeeCode 2010-02-18 00:02:47

3

CoffeeCode是在正确的轨道上,但命名空间包含应的System.Web的System.Web。 MvcSystem.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

相关问题