繁体   English   中英

ASP.NET MVC 3路由结构

[英]ASP.NET MVC 3 Routing Structure

ASP.NET MVC 3路由让我很困惑。 我觉得我已经读完了所有的东西,但有时候,我仍然没有得到它。 我正在尝试创建一个我可以访问的URL

/authorized/home/children/{childID}

我希望该URL显示加载特定子项内容的HTML视图。 我的观点定义如下:

/Views/Authorized/Home/Children/Child.cshtml

在我的global.asax.cs文件中,我添加了以下路由:

  routes.MapRoute(
    "Child", // Route name
    "{controller}/Home/Children/{action}/{id}",
    new { controller = "Authorized", action = "Child", id = UrlParameter.Optional }
  );

在AuthorizedController.cs中,我有以下内容:

public ActionResult Child(string id)
{
  return View("~/Views/Authorized/Home/Children/Child.cshtml");
}

如果我访问/授权/ home / children,我会看到Child.cshtml的内容。 但是,如果我访问/授权/ home / children / 1,我会得到404。

我究竟做错了什么? 谢谢

您分享的路线与您说的想要的路线不符。

你要:

/authorized/home/children/{childID}

但是,你的路线是期待的:

/Authorized/Home/Children/{action}/{id}

请注意那里的附加操作参数。 孩子是你在控制器中的动作,还是孩子? 如果是孩子,你应该更新你的路线:

 routes.MapRoute(
    "Child", // Route name
    "{controller}/Home/{action}/{id}",
    new { controller = "Authorized", action = "Children", id = UrlParameter.Optional }
  );

但是,如果它是Child,你需要从你的路线中移除{action},如下所示:

 routes.MapRoute(
    "Child", // Route name
    "{controller}/Home/Children/{id}",
    new { controller = "Authorized", action = "Child", id = UrlParameter.Optional }
  );

这将是一个明确的路线,指向Child动作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM