2016-06-15 5 views
1

機能のために2に分割した角型アプリケーションがあります。ここでは、デフォルトと管理のアプリを呼び出します。urlがAdminで始まり、Xパラメータを含む場合のデフォルトのMVCルート

私のASP.NET MVCウェブサイトでは、すべてのURLをキャッチしてHome/Index.cshtmlビューをロードするこのルートが定義されています。ユーザーが単語の管理者(例えば。www.mysite.com/adminまたはwww.mysite.com/admin/something)が含まれているURLに行けば

// Mvc routes 
app.UseMvc(builder => 
{ 
    // default goes to Home, and angular will deal with client side routing  
    builder.MapRoute(
     name: "default", 
     template: "{*url}", 
     defaults: new { controller = "home", action = "index" }); 
}); 

さて、私は私の管理者を返したいです/ Index.cshtmlビュー。

これをaccompolishするには、私が追加した私のAdminControllerように

[Authorize] 
public class AdminController : Controller 
{ 
    [Route("~/Admin/{id?}")] 
    public IActionResult Index() 
    { 
     return View(); 
    } 
} 

しかし、私は試してみてのような2つの以上のパラメータとURLをロードする場合www.mysite.com/admin/page/12私Home/Index.cshtmlが返されています。

URLにいくつのパラメータがあっても、Adminという名前がドメイン名の後ろにある場合、どのように私の管理者ビューが返されるのですか?

答えて

0

[Route( "〜/ Admin/{id?}")]はwww.mysite.com/admin/page/12をキャッチできないため、デフォルトルートに移動します。クエリ文字列でパラメータを渡すか、各パラメータの組み合わせごとに異なるアクションを追加する必要があります。

[Route("~/Admin/")] 
public IActionResult Index(int? id, int page){} 

= 12

1
は、以下のようにコードを変更し

ですから、&ページをwww.mysite.com/admin/?id=1使用することができます。

routes.MapRoute(
     name: "spa-fallback-admin", 
     template: "admin/{*url}", 
     defaults: new { controller = "Admin", action = "Index" }); 

routes.MapRoute(
     name: "spa-fallback", 
     template: "{*url}", 
     defaults: new { controller = "Home", action = "Index" }); 
関連する問題