2

私のASP.Net MVC 4プロジェクトでは、コントローラーフォルダーのサブフォルダーにコントローラーがあります-

/Controllers
    /GroupA
        /AbcController.cs

AbcController には、2 つのメソッドがあります。

    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Edit(string value)
    {
        ViewBag.Message = value;
        return View();
    }

RouteConfig.cs -

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "TestRoute",
            url: "GroupA/{controller}/{action}/{id}",
            defaults: new { controller = "AbcController", action = "Index", id = UrlParameter.Optional }               
        );

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

しかし、私が閲覧するときhttp://localhost:2240/groupa/abc/edit/somevalue

、「somevalue」はメソッドに渡されません。ヌルを示しています。

ここで何が欠けていますか?

4

1 に答える 1

6

ルートでは、パラメータは as として宣言されてidいますが、アクション メソッドでは as として宣言されていvalueます。1 つを選んでそれに固執します。

routes.MapRoute(
    name: "TestRoute",
    url: "GroupA/{controller}/{action}/{value}",
    defaults: new { controller = "AbcController", action = "Index", value = UrlParameter.Optional }               
);

public ActionResult Edit(string value)
{
    ViewBag.Message = value;
    return View();
}

編集 : この件について話している間は、 AttributeRoutingを参照することをお勧めします。

于 2013-10-31T19:03:55.507 に答える