子文件夹ASP.Net MVC 4中的控制器

s.k*_*aul 2 asp.net-mvc-4

在我的ASP.Net MVC 4项目中,我在控制器文件夹的子文件夹中有一个控制器 -

/Controllers
    /GroupA
        /AbcController.cs
Run Code Online (Sandbox Code Playgroud)

在AbcController中,我有两种方法 -

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

    public ActionResult Edit(string value)
    {
        ViewBag.Message = value;
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

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 }
        );
    }
Run Code Online (Sandbox Code Playgroud)

但是当我浏览 http://localhost:2240/groupa/abc/edit/somevalue

,'somevalue'不会传递给方法.它显示为null.

我在这里缺少什么?

dom*_*dom 6

在您的路径中,您的参数在声明为id的操作方法中声明为while value.选择一个并坚持下去.

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();
}
Run Code Online (Sandbox Code Playgroud)

编辑:当我们谈论这个主题时,我建议你看一下AttributeRouting.