Html.RenderAction作为静态方法

时间:2013-08-21 16:11:40

标签: c# asp.net-mvc-4 renderaction

我最近开始玩MVC4,现在我正在进行部分观看。

我目前有一个像这样的控制器:

public class BlogController : Controller
{
    [ChildActionOnly]
    public ActionResult MostRecent()
    {
        ...
    }
}

然后我使用以下行从我的任何一个视图中调用它:

 @{ Html.RenderAction("MostRecent", "Blog"); }

是否可以做这样的事情:

public static class PartialHelper
{
    public static string RenderMostRecent()
    {
        return notsurewhat.RenderAction("MostPopular", "Blog");
    }
}

所以在我的代码中我只需要调用:

@PartialHelper.RenderMostRecent()

这样我就可以在任何时候改变控制器/动作,而且我不必更新那些调用部分视图的地方。

如果有更简单的方法可以提供想法!

由于

1 个答案:

答案 0 :(得分:1)

您可以将其作为HtmlHelper类的扩展方法编写:

using Sysem.Web.Mvc;
using Sysem.Web.Mvc.Html;

public static class PartialHelper
{
    public static void RenderMostRecent(this HtmlHelper html)
    {
        html.RenderAction("MostPopular", "Blog");
    }
}

然后在您的视图中使用自定义帮助程序(在将PartialHelper静态类定义到其中的命名空间放入视图中的范围之后):

@{Html.RenderMostRecent();}

您还可以使用Action方法代替RenderAction

public static class PartialHelper
{
    public static IHtmlString RenderMostRecent(this HtmlHelper html)
    {
        return html.Action("MostPopular", "Blog");
    }
}

允许您在视图中调用它:

@Html.RenderMostRecent()