невозможно получить доступ к методу расширения с параметром UrlHelper в контроллере! Наоборот ввиду иметь доступ - PullRequest
1 голос
/ 06 апреля 2010

почему определенный метод расширения с UrlHelper не добавлен в URL. 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>

Ответы [ 2 ]

3 голосов
/ 07 апреля 2010

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>
1 голос
/ 06 апреля 2010

Url является членом ViewPage , но не ControllerBase. Следовательно, у вас нет предварительно сконструированного UrlHelper, доступного для конструкторов. В общем случае вам не нужно создавать URL-адреса в вашем контроллере.

Почему бы вам не использовать Controller.RedirectToRoute ?

...