0

新しい MVC アプリを作成しています。URL に部門名を追加するために、ルーティングを変更したいと考えています。

以下は、VS 2012 によって生成されるものです。

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

    routes.MapRoute( _
        name:="Default", _
        url:="{controller}/{action}/{id}", _
        defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
    )

パスの先頭に部署名を渡したい。元。

http:// ローカルホスト: /hr/Home/Contact

http: //localhost /hr/Home/About

http: //localhost /finance/Home/Contact

http: //localhost /finance/Home/About

http: //localhost /marketing/Home/Contact

http: //localhost /marketing/Home/About

デフォルトのページの代わりに:

http: //localhost /Home/About http: //localhost /Home/Contact

4

2 に答える 2

1

それはかなり簡単なはずです。departmentルートの先頭に追加します。

routes.MapRoute( _
    name:="DepartmentRoute", _
    url:="{department}/{controller}/{action}/{id}", _
    defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)

部門名とのみ一致するように制約を追加することもできます。

    constraints:=New With { .department = @"[hr|finance|marketing]" }
于 2012-08-23T21:37:38.770 に答える
0

URL に部門名が含まれている場合、部門名にアクセスするには 2 つの方法があります。1 つの方法は、プロパティ RouteData.Values を次のように使用することです。

string department = RouteData.Values["department"];

他の方法はよりエレガントです。URL パターン変数に一致する名前でアクション メソッドにパラメータを定義すると、MVC フレームワークは URL から取得した値をパラメータとしてアクション メソッドに渡します。

   public ViewResult Index(string department) {
      ViewBag.Department = department;
      return View();
   }
于 2012-08-23T22:05:36.253 に答える