0

アプリケーションのURLパスを取得するために、次のような方法を使用しています。

string strPathAndQuery = HttpContext.Request.Url.PathAndQuery;
string strUrl = HttpContext.Request.Url.AbsoluteUri.Replace(strPathAndQuery, "/");

これは、現在のURLへのパスになっています。

問題は、私のライブサーバーがIISサーバー内のアプリケーション(フォルダー)としてアプリケーションを実行していることです。したがって、テストすると、次のようなURLが取得されます。

http://localhost/Survey/Create

そして、私が得るライブ:

http://testurl.com/Survey/Create

ライブサーバーに必要なものは次のとおりです。

http://testurl.com/SurveyApp/Survey/Create

SurveyAppは、IISにアプリケーションを格納するフォルダーです。物理的な場所に関係なく、コントローラーが配置されている場所のURLを取得する方法はありますか?

4

3 に答える 3

1

このため、MVC には Url.Content などのメソッドがあります。これらは、"~/Survey/Query" のようなアプリ ディレクトリの相対パスを使用すると、現在の URL を解決します。Html.ActionLink や Url.Action などのメソッドを使用して、特定のアクション メソッドへの URL を取得することもできます。これらは正しいパスに調整されます。

パスを取得しようとしている理由について、より具体的に説明できますか?

于 2012-07-30T16:55:50.957 に答える
0

Url.Contentはあなたが望むものです。何かのようなもの:

string url = Url.Content("Query", "Survey");

最初の引数はアクション、2番目はコントローラーです。 http://msdn.microsoft.com/en-us/library/dd492758

使用できるオーバーロードもかなりあります。

于 2012-07-30T17:15:57.973 に答える
0

相対 URI の前に ~ 記号を追加しようとしましたか。たとえば、/Survey/Query使用をリンクするには~/Survey/Query

編集:

どうHttpContext.Current.Request.ApplicationPathですか?

于 2012-07-30T16:49:27.387 に答える