我很好奇如何调用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()方法吗?
答案 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。