Asp.net mvc 路由配置不';我不接受这个参数

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 =

我在控制器MattinaleController中有此操作:

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”应该是路由配置中设置的。谢谢