2

私はそれを取得しません、私はこのコードを持っています:

return JavaScript(string.Format(
   "window.location = '{0}'",
   UrlHelper.GenerateContentUrl("Index", this.HttpContext)));

このコードは、POSTで機能する2つの非常に一般的な「Create」メソッドの中にあります。2つのメソッドはそれぞれ異なるコントローラークラスにあります。

ここで、URLで呼び出されるメソッドAのhttp://localhost:56688/Businessrule/Create場合、コードが実行されると、にリダイレクトされhttp://localhost:56688/Indexます。

しかし、から呼び出されたメソッドBhttp://localhost:56688/FormulaField/Createの場合、にリダイレクトされhttp://localhost:56688/FormulaField/Indexます。

...本当にわかりません。また、Microsoftのドキュメントはhttp://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.generatecontenturl.aspx(現在はあまり役に立ちません) 、私見、それはメソッドのかなりくだらないドキュメントです)

4

2 に答える 2

2

コントローラ名がないようです。どうやら、あなたは同じコントローラーのインデックスアクションにリダイレクトされています。

これはMVCルートエンジンが行うことです。コントローラー名が見つからない場合は、デフォルト値を割り当てます。この場合、コントローラーはアクションが実行されました。

次のようなものを試してください:

UrlHelper.GenerateContentUrl(@"~\ControllerName\Index", this.HttpContext)
于 2012-08-28T21:11:43.563 に答える
0

したがって、asawyerが指摘したように、それがどのように機能するかは、コード自体によって答えられます。

https://github.com/aspnet/AspNetWebStack/blob/master/src/System.Web.Mvc/UrlHelper.cs

渡す文字列が「〜」で始まる場合、メソッドはPathHelpers.GenerateClientUrlを呼び出しますが、文字列が「〜」で始まらない場合は、同じ文字列を変更せずに返します。

しかし、それでも私はなぜ私が異なる結果を得ているのか理解していません。とにかく、ブラウザに渡される生の応答を詳しく調べる必要があるようです...

于 2012-08-28T21:44:26.117 に答える