Не могу получить доступ к методу расширения с параметром URLHelper в контроллере! Наоборот в поле зрения есть доступ

StackOverflow https://stackoverflow.com/questions/2587198

Вопрос

Почему определенный метод расширения с 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>
Это было полезно?

Решение

URLHelper - это свойство контроллера, а не контроллера.

Убедитесь, что вы импортировали пространство имен класса метода расширения на вашем представлении. Если вы снова импортируете одно и то же пространство имен, вы можете добавить его в 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>

Другие советы

Url является членом Viewpage, но не контроллер базы. Поэтому у вас нет предварительно построенного URLHelper для конструкторов. В общем, вам не нужно приносить URL-адреса в вашем контроллере.

Почему вы не используете Контроллер .edirecttoroute.?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top