gpt4 book ai didi

asp.net-mvc - 参数值未在 ASP.NET MVC 路由中传递

转载 作者:行者123 更新时间:2023-12-04 23:31:17 25 4
gpt4 key购买 nike

我正在学习如何在 ASP.NET MVC 中创建自定义路由,但遇到了麻烦。在我的 Global.asax.cs 文件中,我添加了以下内容:

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

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

// My Custom Route.
routes.MapRoute(
"User_Filter",
"home/filter/{name}",
new { controller = "Home", action = "Filter", name = String.Empty }
);
}

这个想法是让我能够导航到 http://localhost:123/home/filter/mynameparam .这是我的 Controller :
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

public ActionResult Filter(string name)
{
return this.Content(String.Format("You found me {0}", name));
}
}

当我导航到 http://localhost:123/home/filter/mynameparam Controller 方法 Filter被调用,但参数 name总是 null .

有人可以指出我构建自定义路由的正确方法,以便它将 url 中的名称部分传递到 name 中。 Filter() 的参数.

最佳答案

Default路线应该是最后一个。
试试这个方法:

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

// My Custom Route.
routes.MapRoute(
"User_Filter",
"home/filter/{name}",
new { controller = "Home", action = "Filter", name = String.Empty }
);

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}

关于asp.net-mvc - 参数值未在 ASP.NET MVC 路由中传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com