コントローラー内のurlhelperパラメーターを使用して拡張メソッドにアクセスできません!その逆の視界はアクセスできます

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

質問

URLに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を生成する必要はありません。

使ってみませんか controller.redirecttoroute?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top