【问题标题】:why my view Returns a null value of id to the Controller为什么我的视图返回一个空值 id 给控制器
【发布时间】:2015-02-19 04:11:48
【问题描述】:

这是我想要返回 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 RoutCreat

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,但是当我运行项目并单击任何工作人员面前的链接编辑 时,它给了我这样的错误

参数字典包含“MvcApplication1.Controllers.HomeController”中方法“System.Web.Mvc.ActionResult EditStaff(Int32)”的不可为空类型“System.Int32”的参数“idd”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。

我已经花了很多天,但无法修复它。请任何人帮助我解决这个问题。

【问题讨论】:

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


    【解决方案1】:
    @Html.ActionLink("Edit", "EditStaff", "Home", new {id= nn.Staff_Id }, null)
    

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

    【讨论】:

    • 和你一样试过.. 但现在错误是这样的“传递到字典中的模型项的类型是'System.Collections.Generic.List`1[MvcApplication1.Models.TblStaff]' ,但此字典需要类型为“'MvcApplication1.Models.TblStaff'”的模型项
    • 通过错误,它说您传递给视图的是列表(TblStaff 的集合),但您应该将它传递给 TblStaff 的单个对象。希望这会帮助你。 var Staff = db.TblStaffs.Where(m=>m.Staff_Id==id).FirstOrDefault();
    • 不客气,里亚兹。如果对您有帮助,请将其标记为答案。
    【解决方案2】:

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

    这个:

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

    应该是这样的:

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

    【讨论】:

    • 感谢您的回答,我按照您告诉我的方式进行了尝试,但仍然面临同样的问题
    【解决方案3】:

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

    [HttpGet]
        public ActionResult EditStaff(int id)
        {
            Database1Entities db = new Database1Entities();
    
            var Staff = db.TblStaffs.Where(m => m.Staff_Id == id).FirstOrDefault();
            return View(Staff);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多