2017-08-22 7 views
0

私はC#MVC Webサイトで作業しています。JavaScriptのwindow.parent.location = newRelativePathステートメントで親をリダイレクトするポップアップがあります。ポップアップを非表示にするカスタムメソッドを呼び出します)。javacript parent.locationで相対パスを設定するときに使用するプレフィックスを決定するもの

私のアプリケーションの1つの場所で、リダイレクトは素晴らしい動作します。ブラウザは、渡された相対URLの先頭に正しいプロトコル、ホスト、ドメインを追加し、正しくナビゲートします。私のアプリケーションの別の場所では、ブラウザがプロトコルを追加するだけでなく、新しいアプリケーションの別の場所では、(つまり、newRelativePathはポップアップから呼び出され、親ウィンドウには同じ種類の形式に従うURLがあります)ホスト名、ドメイン名を入力するだけでなく、URLの先頭にある以前のページのパスからコントローラ名を追加します(URLに「/ domain/oldcontroller/newcontroller/action」が見つからないという404エラーが表示されます)

どちらの場合も、元の親ウィンドウURLの形式は "protocol:// host/domain/controller/action?id?querystring"で、newRelativePathの形式は "controller/action?querystring"

です。アプリケーション内のさまざまな場所でのwindow.locationまたはwindow.parent.locationの形式の違いを確認できませんブラウザは相対的なURLを別の方法で扱うので、何かが異なる必要があります。

ありがとうございました!代わりに、このようなものの使用

答えて

0

newcontroller/action 

をあなたがこれを使用する必要があります。

/newcontroller/action 

先頭にスラッシュ/は、エクスプローラが相対パスではありません伝えることが重要であるが、絶対パス。

+0

ありがとうございました!私はそれを試みましたが、それはドメインを省略します。もちろん、私はドメインを含む完全なパスを渡すことができますが、これは理想的ではありません。そのパス接頭辞を、アプリケーション内の多くの場所で共有jsファイルのメソッドに渡す必要があります。相対URL。私はむしろスポットが違う理由を理解し、相対URLを使用する方がよいでしょう。 – user756366

関連する問題