gpt4 book ai didi

c# - Controller 无法识别 URL 参数

转载 作者:行者123 更新时间:2023-11-30 22:26:02 25 4
gpt4 key购买 nike

我正在学习 MVC 4,据我了解,转到此 URL 应该将 44 的整数传递给 Controller ​​的 Edit() 方法。确实,当我去这里时:

http://localhost:51921/TrackerJob/Edit/44

...调用此方法:

public ActionResult Edit(int trackerJobId = -1)
{
Debug.WriteLine(trackerJobId);
}

... 但参数始终为 -1。我在另一个项目中工作,但由于某种原因,它在这个项目中总是-1。我看不出这两个项目会导致一个工作和这个失败的区别。如果我将方法签名更改为:

public ActionResult Edit(int trackerJobId)
{
Debug.WriteLine(trackerJobId);
}

我得到一个错误:

参数字典包含不可为空类型“System.Int32”的参数“trackerJobId”的空条目

有什么想法吗?我不确定要检查什么...

编辑 - 根据要求包括路线*

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

routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

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

最佳答案

如果您想使用默认路由,只需确保您的参数名为 id

否则你可以像这样添加一个新路由:

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

确保在默认路由之前添加此路由。路线的顺序很重要!

只有您知道 trackerJobId 是否可选。

请注意,如果您想要更花哨的东西,您可以调整路线以产生您想要的东西。

例如如果您想要像 http://localhost:51921/TJ-E-44 这样的 URL 进行编辑,那么您的路线将如下所示:

routes.MapRoute(
name: "TrackerJobEdit",
url: "TJ-E-{jobtrackerid}",
defaults: new { controller = "TrackerJob", action = "Edit", id = UrlParameter.Optional }
);

我相信你明白了。

关于c# - Controller 无法识别 URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064113/

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