C# 删除MVC 5列表中的问题
最近,我花了一些时间远离MVC,回到一个旧项目,尝试重新编写我以前做过的代码,但在从列表中删除一项时出现了问题,使用EF很好,但我尝试不使用实体框架来管理我的模型数据。我想使用我的模型作为数据库,直到我高兴地提交 我重新编写此问题是为了简化它,而不是转储大量代码,当单击“删除”时,我得到以下错误: 参数字典包含“Project.Views.requestedController”中“System.Web.Mvc.ActionResult RemoveRequested(Int32)”方法的非null类型“System.Int32”的参数“id”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。 参数名称:参数 我认为id通常由EF处理,但我认为C# 删除MVC 5列表中的问题,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,最近,我花了一些时间远离MVC,回到一个旧项目,尝试重新编写我以前做过的代码,但在从列表中删除一项时出现了问题,使用EF很好,但我尝试不使用实体框架来管理我的模型数据。我想使用我的模型作为数据库,直到我高兴地提交 我重新编写此问题是为了简化它,而不是转储大量代码,当单击“删除”时,我得到以下错误: 参数字典包含“Project.Views.requestedController”中“System.Web.Mvc.ActionResult RemoveRequested(Int32)”方法的非nu
[key]
会将其处理为自动递增-这可以排序吗
希望这是有意义的。我并不真正关心动态,因此理想情况下,除非我必须这样做,否则没有jQuery/java脚本
代码:
局部视图
@model IEnumerable<Project.Models.Allocation>
@using (Html.BeginForm())
{
if (Model != null)
{
foreach (var ri in Model)
{
<div class="ui-grid-c ui-responsive">
<div class="ui-block-a">
<span>
@ri.one
</span>
</div>
<div class="ui-block-b">
<span>
@ri.two
</span>
</div>
<div class="ui-block-c">
<span>
@ri.three
</span>
</div>
<div class="ui-block-d">
<span>
@Html.ActionLink("Delete", "RemoveRequested", new { id = ri.id })
</span>
</div>
</div>
}
}
我不会使用可为空的键并添加
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
属性
更改您的分配
类型将其更改为:
public class Allocation
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
[Required]
public string one { get; set; }
[Required]
public string two { get; set; }
[Required]
public string three { get; set; }
}
这将与您的操作参数匹配。
但是,如果您的密钥为null,则必须有其他问题,并且它们现在将使用默认值零
另一个选项是更改操作以接受可为null的类型作为参数:
public ActionResult RemoveRequested(int? id)
请注意,我也会使用
HttpPost
来删除,而不是像您当前所做的那样使用HttpGet
。好的-谢谢,现在在获取请求的URL:/Container/removequested/0
时做了一些更改-因此没有分配id,如何最好地执行此操作?将此添加到您的密钥[数据库生成](DatabaseGeneratedOption.Identity)]
太多。:)这需要EF吗?那是干什么的?我想避免EF,所以在提交到实际数据库之前,只需将模型用作临时数据库。也就是EF,如果它是我,我将有一个视图模型或模型,并使用automapper从EF数据实体映射它,该实体上有EF特定的属性,但这一切都取决于您的架构选择。谢谢,非常有帮助-所以如果没有临时数据库文件,我无法轻松实现这一点?是否在课程结束/最终提交时删除?
public class Allocation
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
[Required]
public string one { get; set; }
[Required]
public string two { get; set; }
[Required]
public string three { get; set; }
}
public ActionResult RemoveRequested(int? id)