まず、nop/mvcの新機能です。この一見簡単な作業には何の解決策も見つけられません。Asp.Net MVC 3 - 既にエリアに属している別のルートをマップする
私は作成しているプラグインのカスタムルートを定義していますが、これまではうまくいっています。私が定義したどのルートも問題なく働いています(例: "/ Dealerlocator"と "Dealer/List"のルートを設定しました)
問題は、 '/ Admin' 「管理者/ディーラー」のようなカスタムルートを設定しようとすると、自分のルートがエリアではなくカスタムルートで解決されていると言うことができます。
私は "Admin/Dealer"に行ってみたいと思っていますが、それは無視されます。この1つの領域に設定されたルートが原因で、RouteProviderクラスで定義したルートを使用します。
DataTokensを使用してこの問題を解決することを推奨しました。しかし、私はそれらを働かせることはできません。
私のプラグインのルーティングコード:
public partial class RouteProvider : IRouteProvider
{
public void RegisterRoutes(RouteCollection routes)
{
var route = routes.MapRoute(
"Nop.Plugin.Misc.DealersAdmin",
"Admin/Dealer",
new { controller = "DealerAdmin", action = "Index" },
new[] { "Nop.Plugin.Misc.Dealers.Controllers" }
);
route.DataTokens.Add("Area", "Admin");
}
}
Nopcommerceの管理エリアルーティング:
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", area = "Admin", id = "" },
new[] { "Nop.Admin.Controllers" }
);
}
}
は、私は、コントローラは「ディーラー」と命名されている場合と一致しないようにエリア登録に条件を設定しようとしましたそれはうまくいくようです。しかし、AdminAreaRegistrationクラスはコアのnopフレームワークの一部として変更することはできません。私はすべての作業をRouteProviderクラスで行ってみたいと思います。多分私のルートの優先順位を高く設定して最初に解決される方法がありますか?ありがとう。
(「Admin/Plugin/Dealer/Admin/List」のように)その部分が領域ルートによって照合されないようにします。これはこれを行うための許容される方法のように見えますか? – Tomas