为什么我的视图返回一个id的空值给Controller

时间:2014-12-20 10:37:45

标签: c# asp.net-mvc asp.net-mvc-4 routing

我希望从中返回Id

<table border="1">
    <tr>
        <td> Id </td>
        <td>  Name  </td>
        <td>  Age </td>
        <td> Date Of Joining  </td>
        <td>  Address  </td>
        <td>  Department  </td>
        <td> Action  </td>
    </tr>
 @foreach (var nn in Model){
    <tr>

        <td> @nn.Staff_Id </td>
        <td> @nn.Staff_Name </td>
        <td> @nn.Age </td>
        <td> @nn.DO_Joining </td>
        <td> @nn.Address </td>
        <td> @nn.Deptt </td>
        <td> @Html.ActionLink("Edit", "EditStaff", "Home", new {id= nn.Staff_Id })  |   @Html.ActionLink("Remove", "RemoveStaff", "Home", new {id= nn.Staff_Id })</td> 
    </tr>

} 这是将作为参数传递id的控制器

[HttpGet]
    public ActionResult EditStaff(int id)
    {
        Database1Entities db = new Database1Entities();

        var Staff = db.TblStaffs.Where(m => m.Staff_Id == id).ToList();
        return View(Staff);
    }
    [HttpPost]
    public ActionResult EditStaff(TblStaff obj)
    {
        return View();
    }

这是第一次出现的Action Rout Creat

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Creat", id = UrlParameter.Optional }

然后我在此视图中有一个链接到 ShowStaff 控制器

@Html.ActionLink("Show All Staff", "ShowStaff")

我已将id传递给控制器​​EditStaff,但是当我运行项目并点击任何员工面前的修改链接时,它就会给我像这样的错误

  

参数字典包含参数&quot; idd&#39;的空条目。非可空类型的System.Int32&#39; for method&#39; System.Web.Mvc.ActionResult EditStaff(Int32)&#39;在&#39; MvcApplication1.Controllers.HomeController&#39;。可选参数必须是引用类型,可空类型,或者声明为可选参数。

我花了好几天但却无法修复它。请帮助我解决这个问题。

3 个答案:

答案 0 :(得分:0)

您的问题是您传递的参数为id,但控制器正在寻找idd

此:

@Html.ActionLink("Edit", "EditStaff", "Home", new {id= nn.Staff_Id })

应该是这样的:

@Html.ActionLink("Edit", "EditStaff", "Home", new {idd= nn.Staff_Id })

答案 1 :(得分:0)

@Html.ActionLink("Edit", "EditStaff", "Home", new {id= nn.Staff_Id }, null)

为ActionLink试用此代码。
如果在Action Link中提供4个参数,则第3个参数用于routeValues,第4个参数为htmlAttributes
您需要传递5个参数。第五个参数nullhtmlAttributes。 此致

答案 2 :(得分:0)

通过在Tasawar的帮助下实现此代码解决了我的问题,非常感谢