0

私が達成しようとしていることについて少し助けが必要です。ASP MVC アプリを実行していますが、ルートを適切に作成できません。

私は nuget パッケージの Attribute Routing を使用しています (これはデフォルトで MVC5 に含まれています)。

最初は、正しいものを適切に一致させるすべてのルートを使用しても問題はありませんでしたが、その後、国際化に取り組み始め、すべてが爆発しました!

だからここに問題があります:

これらの URL を取得する必要があります: domain/culture/id/product/action ですが、製品のアクションは 1 つしかありません。そのため、ユーザーが私のウェブサイトにアクセスすると、言語が設定され、要求された製品にリダイレクトされます (要求されていない場合はデフォルトの製品)。

私は試した

return RedirectToRoute("/" + cultureName + "/" + id + "/" + productName + "/");

しかし、ルーティング エクスプローラーでルート /{culture}/{id}/ProductName が明確に表示されるため、ルートが存在しないことを伝えることはできませんでした。

これをこのように行うことは可能ですか、それともルーティングについての考え方を変える必要がありますか?

4

1 に答える 1

1
return RedirectToRoute("SomeRouteName", new { 
    culture = cultureName,
    id = id, 
    productName = productName 
});

そしてあなたのルート定義:

routes.MapRoute(
    "SomeRouteName",
    "{culture}/{id}/{productName}",
    new { controller = "Home", action = "Index" }
);

ルートのパターンは、{culture}/{id}/{productName}RedirectToAction を呼び出すときに各トークンを指定する必要がある場所であることに注意してください。このコントローラーにはアクションが 1 つしかないため、指定する必要はありません。それはあなたのルートで定義されています。

于 2013-11-13T09:59:17.220 に答える