コントローラー内のurlhelperパラメーターを使用して拡張メソッドにアクセスできません!その逆の視界はアクセスできます
-
24-09-2019 - |
質問
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?
所属していません StackOverflow