MVC中控制器的多个路由值

时间:2017-01-20 17:22:35

标签: asp.net-mvc

将参数传递给控制器​​时遇到问题 以下是我的观点:

 @model IEnumerable<WebApplication2.Models.Distributer>
 @foreach (var item in Model) {
 @Html.ActionLink("Edit", "Edit", new{id=item.DistributerID,user=item.Name }) 
}

我的控制器

   public ActionResult Edit(int? id,string name)
    {
        ViewBag.name = name;
 }

在编辑视图中,只显示名称。

我的路线图

 routes.MapRoute(
            name: "Route1",
            url: "{controller}/{action}/{id}/{user}",
            defaults: new { controller = "Distributers", action = "Edit", id = UrlParameter.Optional,user="" }
        );

这里我发现控制器中的变量名是null。为了测试路由的工作原理。我从循环中拉出链接,即;

    @model WebApplication2.Models.Distributer
@Html.ActionLink("Edit", "Edit",new{id=item.DistributerID,user=Model.Name}) 

这适用于Fine..string name = value(not null)

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您的路线和Html.ActionLink来电中的参数为user,但在您的操作方法签名中,它是name。换句话说,user正在传递,但你的动作方法对它没有任何作用。相反,永远不会提供name参数。确保参数名称在任何地方都排成一行,然后你就变得很黄金了。