将值传递给控制器​​方法时出错

时间:2012-07-11 21:24:30

标签: c# asp.net asp.net-mvc-3 entity-framework

这是错误报告:

  

参数字典包含参数'id'的空条目   方法的非可空类型'System.Int32'   'System.Web.Mvc.ActionResult删除(Int32)'中   'Grid.Controllers.GridController'。可选参数必须是a   引用类型,可空类型,或声明为可选   参数。参数名称:参数

这是我的代码:

public ActionResult Edit(int ProductId)
    {
        using (var db = new radioEntities())
        {
            return View(db.CAT_Products.Find(ProductId));
        }
    }

我的路线表:

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

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Grid", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

我的行动链接:

@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ })

1 个答案:

答案 0 :(得分:5)

当你的RouteTable(global.asax.cs)中有id时,你必须为参数使用相同的名称:

//public ActionResult Edit(int ProductId)
public ActionResult Edit(int id)

您应该编辑(修复)ActionLink:

//@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ })
@Html.ActionLink("Edit", "Edit", new { id=item.YourKey })  // depends on your Model and other code