1. ホーム
  2. c#

[解決済み] ASP.NET MVCでアクションの完全なURLを取得する [重複] [重複

2022-03-23 13:08:43

質問

アクションの完全なURLを取得するビルトインの方法はありますか?

私は次のようなものを探しています。 GetFullUrl("Action", "Controller") のようなものを返します。 http://www.fred.com/Controller/Action .

これを探している理由は、自動生成されるメールにURLをハードコーディングするのを避けるためで、常にサイトの現在地から相対的にURLを生成できるようにするためです。

どのように解決するのですか?

Url.Actionのオーバーロードには、希望するプロトコル(httpやhttpsなど)を引数に取るものがあります。これを指定すると、完全修飾URLが取得されます。

以下は、現在のリクエストのプロトコルをアクションメソッドで使用する例です。

var fullUrl = this.Url.Action("Edit", "Posts", new { id = 5 }, this.Request.Url.Scheme);

HtmlHelper (@Html) にも ActionLink メソッドのオーバーロードがあり、razor でアンカー要素を作成するために使用できますが、これも hostName と fragment パラメータが必要です。なので、私ならまた@Url.Actionを使うことを選びますね。

<span>
  Copy
  <a href='@Url.Action("About", "Home", null, Request.Url.Scheme)'>this link</a> 
  and post it anywhere on the internet!
</span>