Asp.net mvc 路由配置不';我不接受这个参数
我在控制器MattinaleController中有此操作:Asp.net mvc 路由配置不';我不接受这个参数,asp.net-mvc,routes,Asp.net Mvc,Routes,我在控制器MattinaleController中有此操作: public ActionResult Modifica(int id) { // manipulate data from repository return RedirectToAction("Modifica", "Modifica"); } 这是我的路线: routes.MapRoute( name: "", url: "", defaults: new { controller =
public ActionResult Modifica(int id)
{
// manipulate data from repository
return RedirectToAction("Modifica", "Modifica");
}
这是我的路线:
routes.MapRoute(
name: "",
url: "",
defaults: new { controller = "Mattinale", action = "Index" }
);
routes.MapRoute(
name: "",
url: "ModificaComunicazione/{IDArticolazione}",
defaults: new { controller = "Mattinale", action = "Modifica" }
);
routes.MapRoute(
name: "",
url: "{anno}/{mese}/{giorno}",
defaults: new { controller = "Mattinale", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
当我开始调试并尝试调用路由myHost/modificacommunicazione/5
(此处为随机数)时,我得到以下错误(翻译):
参数字典包含非参数的参数“id”的空值
方法“System.Web.Mvc.ActionResult”的可空类型“System.Int32”
“Mattinale.WebUI.Controllers.MattinaleController”中的“Modifica(Int32)”
看起来它不接受参数。我错过了什么
谢谢,Davide。Davide,是的,您可以从url获得id参数,但不会发送到重定向。您应该将id参数发送到RedirectToAction方法。
签出:只需浏览此链接即可。参数名称应该与操作中定义的名称相同。不,我没有从url获取ID参数,这就是重点。如果我将参数修改为可选Modifica(int id=0),我不会得到任何错误,但id值将始终为0。。。它没有从url传递到操作,路由配置一定有问题。您的说明中有问题,您称之为ModificCommunicazione操作,而您的问题中没有任何问题。所以我猜你首先调用它,在这个动作中你重定向到第二个动作Modifica,但是你没有把int值从第一个动作传递到第二个动作。所以我想你得到了错误。当您将参数设置为id=0时,您将获得默认值,并且它正常工作。我不调用任何ModificCommunicazione操作,这只是直接从url调用Mattinale控制器中Modifica操作的别名。顺便说一句,问题得到了回答。当然!我调用了参数“id”,而“IDArticolazione”应该是路由配置中设置的。谢谢