![](/img/trans.png)
[英]The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' . .
[英]The parameters dictionary contains a null entry for parameter '_id' of non-nullable type 'System.Int32'
(这是一个简单的电话簿项目)我想删除列表中的一行(笔记本中的联系人),并且当用户按下删除按钮时,我想显示其信息并获得用户的确认,这里是查看代码
@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();
}
如何在确认视图中显示所选数据?
当我按下按钮将其删除时,我也收到此错误
参数字典包含“ Project1.Controllers.HomeController”中方法“ System.Web.Mvc.ActionResult Delete(Int32)”的非空类型“ System.Int32”的参数“ _id”的空条目。 可选参数必须是引用类型,可为空的类型,或者必须声明为可选参数。 参数名称:参数
当我按下按钮将其删除时,我猜它会返回空值,或者我必须对routconfig做一些事情,请帮我,我正在工作2天(您应该知道我才刚刚开始学习mvc)
您正在执行表单提交,并且您的操作被标记为HttpPost,所以回到mvc的是一个Project1.Models.EF_Model.Phone_book对象。
您的视图中没有任何内容告诉控制器它应该获得_id参数,因此当Mvc绑定参数时,它不会将任何内容绑定到_id。
为了解决这个问题,看到这个答案的方式来传递_id回控制器。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.