值不能为空。参数名称:实体

Value cannot be null. Parameter name: entity

我有以下视图(基本 "edit" 模板)

  @model SuccessStories.Models.Testimonials

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>Testimonials</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.Id)

        <div class="form-group">
            @Html.LabelFor(model => model.Testimonial, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Testimonial, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Testimonial, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

在我的控制器中产生以下操作结果:

[HttpGet]
    public ActionResult Edit(int id)
    {
            TestimonialsContext testContext = new TestimonialsContext();
            Testimonials testimonials = testContext.testimonialContext.Find(id);
            return View(testimonials);  
    }

    [HttpPost]
    public ActionResult Edit(Testimonials testimonial)
    {
        TestimonialsContext testContext = new TestimonialsContext();
        testContext.Entry(testimonial).State = EntityState.Modified;
        testContext.SaveChanges();

        return RedirectToAction("Index");
    }

错误在这一行:

testContext.Entry(testimonial).State = EntityState.Modified;

我得到的错误是“值不能为空。 参数名称:entity

问题描述:当前网络请求执行过程中出现未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。

异常详细信息:System.ArgumentNullException:值不能为空。 参数名称:实体

请帮忙。我已经查过了,但找不到适合我的解决方案。谢谢!

感谢大家的帮助。根据你告诉我什么是 null,我想出了这种方法来修复它。

        [HttpPost, ActionName("Edit")]
    public ActionResult EditConfirmed(int id, string Testimonial)

    {
        TestimonialsContext testContext = new TestimonialsContext();
        Testimonials testimonial = testContext.testimonialContext.Find(id);
        testimonial.Testimonial = Testimonial;
        testContext.Entry(testimonial).State = EntityState.Modified;
        testContext.SaveChanges();
        return RedirectToAction("Index");
    }

Testimonial是输入框的名称,与数据库中条目同名table。