【问题标题】:Route config doesn't take the parameter路由配置不带参数
【发布时间】:2019-01-09 09:24:55
【问题描述】:

我在控制器 MattinaleController 中有这个 Action:

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/ModificaComunicazione/5(此处为随机数)时,我收到此错误(已翻译):

参数字典包含非参数“id”的空值 方法“System.Web.Mvc.ActionResult”的可为空类型“System.Int32” 'Mattinale.WebUI.Controllers.MattinaleController' 中的 Modifica(Int32)'

看起来它不带参数。我错过了什么?!

谢谢,大卫。

【问题讨论】:

    标签: asp.net-mvc routes


    【解决方案1】:

    只需通过此链接。 Route config doesn't take the parameter。参数名称应与操作中定义的名称相同。

    【讨论】:

    • 当然!我将参数称为“id”,而“IDArticolazione”应该是在路由配置中设置的。谢谢。
    【解决方案2】:

    Davide,是的,您从 url 获得了 id 参数,但没有发送到重定向。您应该将 id 参数发送到 RedirectToAction 方法。 签出:RedirectToAction with parameter

    【讨论】:

    • 不,我没有从 url 获得 ID 参数,这就是重点。如果我将参数修改为可选 Modifica(int id = 0),我不会收到任何错误,但 id 值将始终为 0...它不是从 url 传递到 action,肯定有问题路由配置。
    • 您的说明中有问题,您调用 ModificaComunicazione 行动,而您的问题中没有任何内容。所以我猜你先调用它,然后在动作中重定向到名为 Modifica 的第二个动作但是你没有将 int 值从第一个动作传递给第二个动作。所以你得到了我认为的错误。当您将参数设置为 id = 0 时,您将获得默认值并且它可以正常工作
    • 我不调用任何 ModificaComunicazione 动作,这只是直接从 url 调用 Mattinale 控制器中的 Modifica 动作的别名。顺便说一句,问题得到了回答。
    猜你喜欢
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2011-03-17
    • 1970-01-01
    相关资源
    最近更新 更多