参数字典包含参数'_id'System.Int32'

本文关键字:参数 System Int32 id 字典 包含 | 更新日期: 2023-09-27 18:04:43

(这是一个简单的电话簿项目)我想在一个列表中删除一行(从笔记本中的联系人),当用户按下删除按钮时,我想显示它的信息并从用户获得确认下面是视图代码

    @model Project1.Models.EF_Model.Phone_book
@{
    ViewBag.Title = "Delete";
}
<h2>Delete</h2>
<h3>Are you sure you want to delete this?</h3>
<div>
    <h4>Product</h4>
    <hr />
    <dl class="dl-horizontal">
        <tr>
        <dt>
            @Html.DisplayNameFor(model => model.First_Name)
        </dt>
        <td>
            @Html.DisplayFor(model => model.First_Name)
        </td>
        <dt>
            @Html.DisplayNameFor(model => model.Last_Name)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Last_Name)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Number)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Number)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Email)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Email)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Address)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Address)

   </dd>
    </tr>
    </dl>
  @using (Html.BeginForm())
     {
        @Html.AntiForgeryToken()
        <div class="form-actions no-color">
        <input type="submit" value="Delete" class="btn btn-default" /> |
            @Html.ActionLink("Back to List", "Index")
        </div>
    }
</div>

在我的控制器中,我检查基础并将id发送给模型以删除它

[HttpGet]
public ActionResult Delete(int? _id)
{
    return View();
}
#endregion
#region [- Post -]
[HttpPost]
public ActionResult Delete(int _id)
{
    if (ModelState.IsValid)
    {
        Ref_ViewModel = new ViewModel.ViewModel();
        Ref_ViewModel.Delete(_id);
    }
    else
    {
        ViewBag.Massage = "Choose a Contact";
    }
    return View();
} 

我如何在我的确认视图中显示我选择的数据?

当我按下按钮删除它我还收到了这个错误

参数字典包含一个非空类型'System '的参数'_id'的空条目。方法'System.Web.Mvc.ActionResult Delete(Int32)' in 'Project1.Controllers.HomeController'。可选参数必须是引用类型、可空类型,或者声明为可选参数。参数名称:parameters

当我按下按钮删除它时,我猜它返回null值或者我必须与routconfig做一些事情,请帮助我,我正在工作2天(你应该知道我刚刚开始学习mvc)

参数字典包含参数'_id'System.Int32'

MVC告诉你,你有一个方法,它采用int _id的非空参数,没有提供值。这意味着当数据被发送到web服务器时,表单集合不包含名为_id的值。

在HTML中提交表单时,默认情况下发送到服务器的唯一数据是元素。因此,为了将_id值发送到服务器,您可以在表单中创建一个名称为_id的元素。

MVC有帮助函数来根据视图模型为您创建输入。@Html.HiddenFor(model => model._id) .

 @using (Html.BeginForm())
 {
    @Html.AntiForgeryToken()
    <div class="form-actions no-color">
    @Html.HiddenFor(model => model._id)
    <input type="submit" value="Delete" class="btn btn-default" /> |
        @Html.ActionLink("Back to List", "Index")
    </div>
}

祝你学习MVC好运。我鼓励您尝试这里的教程。http://www.asp.net/mvc/overview/getting-started/introduction/getting-started

你正在做一个表单提交,你的动作被标记为HttpPost,所以什么会回到mvc是一个Project1.Models.EF_Model。Phone_book对象。

你的视图中没有任何东西告诉控制器它应该获得一个_id参数,所以当Mvc绑定参数时,它不会绑定任何东西到_id。

要解决这个问题,请参阅下面的答案,找到将_id传递回控制器的方法。

相关文章: