1

为什么没有在 Url 中添加使用 UrlHelper 定义的扩展方法。EXTENSIONMETHOD当我想在控制器中使用它时!但我可以访问它?

public static string Home(this UrlHelper helper)
{
    return helper.RouteUrl("ABC", new { controller = "ABC", Action = "Default" });
}

我没有访问:

public ActionResult Default()
{
    return Redirect(Url.Home());
}

我可以访问:

<a href="<%=Url.Home() %>" title="Hello">Hello</a>
4

2 回答 2

3

UrlHelper 是 Controller 而不是 ControllerBase 的属性。

检查您是否在视图中导入了扩展方法类的命名空间。如果您一遍又一遍地导入相同的命名空间,您可以在 web.config 中添加它:

<pages>
    <namespaces>
        <add namespace="System.Web.Mvc"/>
        <add namespace="System.Web.Mvc.Html"/>
        <add namespace="System.Web.Routing"/>
        <add namespace="Telerik.Web.Mvc"/>
        <add namespace="Telerik.Web.Mvc.UI"/>
        <add namespace="Shrinkr"/>
        <add namespace="Shrinkr.DataTransferObjects"/>
        <add namespace="Shrinkr.Web"/>
    </namespaces>
</pages>
于 2010-04-07T19:41:39.557 回答
1

Url是 ViewPage 的成员,但不是 ControllerBase 的成员。因此,您没有可用于构造函数的预构造 UrlHelper。通常,您不需要在控制器中生成 URL。

你为什么不使用Controller.RedirectToRoute

于 2010-04-06T18:14:22.680 回答