如何在Controller Action中使用HtmlHelper.ActionLink()扩展方法

时间:2013-07-01 19:01:06

标签: asp.net-mvc visual-studio-2010 asp.net-mvc-3

我很好奇如何调用LinkExtensions.ActionLink Method (HtmlHelper, String, String)中描述的HtmlHelper.ActionLink()方法以下是我的控制器,在一个空的MVC项目中:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;

namespace TempMVC.Controllers
{
    public class DataController : Controller
    {
       public ActionResult Index()
       {
           HtmlHelper.GenerateLink(
                                   RequestContext requestContext, 
                                   RouteCollection routeCollection, 
                                   string linkText, 
                                   string routeName, 
                                   string actionName, 
                                   string controllerName, 
                                   RouteValueDictionary routeValues, 
                                   IDictionary<string, object> htmlAttributes
           ); //OK
           HtmlHelper.GenerateRouteLink(
                                       RequestContext requestContext, 
                                       RouteCollection routeCollection, 
                                       string linkText, 
                                       string routeName, 
                                       RouteValueDictionary routeValues, 
                                       IDictionary<string, object> htmlAttributes
           ); //OK
           HtmlHelper.ActionLink(string linkText, string actionName); //Error
           return View();
       }
   }
}

虽然我可以使用HtmlHelper.GenerateLink()HtmlHelper.GenerateRouteLink()方法,但在尝试使用HtmlHelper.ActionLink()时出现以下错误:

The type name 'ActionLink' does not exist in the type 'System.Web.Mvc.HtmlHelper'

请注意,我已在顶部声明System.Web.Mvc.Html,我看到它列在我的 Web.config 文件中。

我可以在控制器中使用 HtmlHelper.ActionLink()方法吗?

2 个答案:

答案 0 :(得分:3)

.ActionLink是需要HtmlHelper对象的扩展方法。因此,您可以创建此对象并使用.ActionLink方法:

var h = new HtmlHelper(
    new ViewContext(
        ControllerContext, 
        new WebFormView("name"), 
        new ViewDataDictionary(), 
        new TempDataDictionary()), 
        new ViewPage());

var link = h.ActionLink("LinkText", "Action"); // type of 'link' is MvcHtmlString

答案 1 :(得分:2)

HTML帮助程序用于Views,NOT控制器。控制器仅将数据传递给视图。然后,视图使用HTML Helpers为数据生成UI。