3

URLアドレスバーの を変更する必要があります。

私は探しましURL Rewriteたが、私が見た限りでは、次のようなリクエストで機能します:

url.com/mypage.aspx?xp=asd&yp=okasd

それを次のように変換します。

url.com/mypage/asd/okasd

http://www.iis.net/downloads/microsoft/url-rewrite

それは私の範囲ではありません。私はすでに でMVC Routes作業していurl.com/mypageます。問題は、入力するURLとリダイレクトされることです (これが私が望む動作です) url.com/otherpage/actionX?param=value。問題は、アドレスバーを表示したいということですurl.com/mypageURL Rewriteそのために機能しますか?「通常の」アクセスではなく内部リダイレクト(RedirectToAction)であるため、機能するかどうかわからないため、質問しています。私の質問で説明したように、なぜそのルートを作成できないのか疑問に思っている人がurl.com/mypageいる場合、呼び出すアクションを決定する「ルーター」にリダイレクトするルールが1つあります。

いくつかの質問を見てきましたが、それらが私の特定の問題をカバーしているとは思いません:

MVC3 は URL を変更します

C# - MVC3 で URL を書き換える方法

アップデート

これは私のルートです:

routes.MapRoute(
    "Profile", // Route name
    "{urlParam}", // URL with parameters
    new { controller = "Profile", action = "Router" } // Parameter defaults
);

アクション内Routerで行われたいくつかの検証に従って、正しいアクションにリダイレクトしますurlParam。各アクションが異なる を返すため、この動作が必要Viewです。

MVC4 を使用するようになったため、タグを更新しました

ありがとう。

4

4 に答える 4

0

Server.Transferはまさに必要なものですが、MVC では利用できません。

MVC の世界では、このスレッドで定義されている TransferResult クラスを使用できます。

それで...いつものようにurlParamを処理するコードをROUTEアクションに追加し、ユーザーを新しいURLに「リダイレクト」(RedirectToAction)する代わりに、変更せずに新しいアクションメソッドにユーザーを「転送」するだけですURL。

しかし、そこに問題があります(私はそれをテストしていないと思います)...その新しいページが何かをポストバックする場合...ルーターのアクションURL(url.com/mypage)を使用せず、実際のアクション(url.com/mypage)を使用します。 com/otherpage)

それが役に立てば幸い。

于 2013-05-08T17:33:54.510 に答える
0

以前、Windows ボックスで PHP サイトを実行する必要がありました。最初に実行されたLinuxボックスでは、サイトがすべてのリクエストを1つのphpファイル(index.php)で処理するように定義された書き換えがありました。

次のパラメーターを使用して URL 書き換えをインストールおよび構成しました

Name              : all to index.php
Match URL ------------------------------
 Requested URL    : Matches the Pattern
 Using            : Regular Expressions
 Pattern          : (.*)
 Ignore Case      : Checked
Conditions -----------------------------
 Logical Grouping : Match All
    Input         : {REQUEST_FILENAME}
    Type          : Is Not a File
Action ---------------------------------
 Action Type      : Rewrite
 Action Properties:
   Rewrite Url         : /index.php?$1
   Append Query String : Checked
   Log Rewritten URL   : Checked

これにより、サイトへのすべてのリクエスト (css や js ファイルなどのファイルを除く) が index.php によって処理されます。

サーバー側のクライアントURLで動作するため、url.com/user/1サーバー側で処理されます。url.com/index.php?/user/1

これをベースとして使用すると、(リダイレクトではなく)書き換えを作成できます。

于 2013-05-07T12:07:16.833 に答える
0

私の意見では、次のことを試すことができます:

  1. Action メソッドから EmptyResult または RedirectResult を返します。
  2. また、必要な URL のアウトバウンド ルートをセットアップして構築する必要があります。

第二に、これらが機能しない場合、この状況を処理する大まかな方法​​は、Div タグを使用し、Div のコンテンツを Action メソッドによって生成された HTML に置き換えることです。ここでは、問題のコンテキストで jquery ajax 呼び出しを呼び出すことができると想定しています。

お役に立てれば。

于 2013-05-09T07:09:00.947 に答える