3

物理的なaspxページがなく、Razorビューエンジンを使用する場合でも、MVCアプリに.aspxページのURLを設定したいと思います。

1)そのようなルートを定義することは可能ですか?

2)たとえば、次のようなURLが必要な場合、そのルートはどのようになりますか。

http://example.com/controller/action.aspx

オプションで

http://example.com/controller/action.aspx/id

オプションで

http://example.com/controller/action.aspx?queryParam1=value&queryParam2=value(等々...)

アップデート

私は次のようなURLが必要だと気づきました。

http://example.com/controller/id.aspx

つまり、特定のアクションを指定したくないのです。デフォルトのアクションはすべてのリクエストを処理します。

別の更新

ルート設定で指定したのは次のとおりです。

routes.MapRoute(
name: "Default",
url: "{controller}/{id}.aspx",
defaults: new { controller = "Foo", action = "Index", id = "default" }
);

ただし、上記のルートは、以下のようにIdが指定されているURLでは機能します。

http://example.com/foo/bar.aspx

以下の場合のように、IDが指定されていない場合は機能しません。

http://example.com/foo/
4

1 に答える 1

5

すべてのルートに影響する場合は、デフォルトルートを次のように変更できます。

routes.MapRoute(
    "Default",
    "{controller}/{action}.aspx/{id}",
    new { controller = "Home", action = "Index" }
);

特定のルートにのみ必要な場合は、上記のようなルートを追加できますが、名前は。以外Defaultで、デフォルトルートはそのままにしておきます。その後、必要に応じて、その名前から新しいルートパターンを使用できます。

アップデート:

私はこれを試したことがないので、確かではありませんが、これは私が試すことです:

routes.MapRoute(
    "Default",
    "{controller}/{id}.aspx",
    new { controller = "Home", action = "Index" }
);

アクションのデフォルト値を変更して、アクションの値と一致するようにする必要があります。

別の更新:

それを処理するには、2つのルートが必要になると思います。最初のルートにはIDが必要であり、デフォルトのIDは指定しないでください。2番目の例のように、そのルートが一致しない場合は、2番目のルートに分類されます。

routes.MapRoute(
    "DefaultWithId",
    "{controller}/{id}.aspx",
    new { controller = "Home", action = "Index" }
);

routes.MapRoute(
    "Default",
    "{controller}/",
    new { controller = "Home", action = "Index" }
);

最も具体的なルートが最初に来ることが重要です。次に、ルートがトップダウンで読み取られ、一致するものが見つかるとすぐにそのルートが使用されるため、具体性の低いルートにフォールバックすることが重要です。

于 2013-01-28T12:21:39.240 に答える