繁体   English   中英

自加载实体以来,实体可能已被修改或删除。 (ASP.NET MVC)

[英]Entities may have been modified or deleted since entities were loaded. (ASP.NET MVC)

我尝试从SelectedList更新表中的一个属性

这是我的模特

 public partial class Interwier
{
    [Key]
    public int Interwier_id { get; set; }
    [Display(Name = "ФИО")]
    public string FIO { get; set; }
    [Display(Name = "Email")]
    public string Email { get; set; }
    [Display(Name = "Телефон")]
    public string Telephone { get; set; }
    [Display(Name = "День рождения")]
    public System.DateTime Birthday { get; set; }
    [Display(Name = "Город")]
    public string City { get; set; }
    [Display(Name = "Зарплата")]
    public string Salary { get; set; }
    [Display(Name = "Английский язык")]
    public string English { get; set; }
    public Nullable<int> VacancyId { get; set; }
    public string Status { get; set; }

    public virtual Vacancy Vacancy { get; set; }
}

我需要更新Status属性。

这是控制器中的编辑动作

public ActionResult Edit(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Interwier interwierModel = db.InterwierModels.Find(id);
        if (interwierModel == null)
        {
            return HttpNotFound();
        }
        return View(interwierModel);
    }

    // POST: Interwier/Edit/5
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "Id,Email,Telephone,Birthday,City,Salary,English,Status")] Interwier interwierModel)
    {
        if (ModelState.IsValid)
        {
            db.Entry(interwierModel).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Incoming");
        }
        return View(interwierModel);
    }

这是它在View上的外观

<div class="form-group" style="padding-left: 515px;">
        <div class="col-md-10">

            @Html.DropDownListFor(model => model.Status, new[]
                {
                    new SelectListItem() {Text = "Подтвердить", Value = "Одобрено"},
                    new SelectListItem() {Text = "Отправить в архив", Value = "Архив"},
                }, "Статус", new { @class = "form-control" })

        </div>
    </div>

单击提交按钮时出现此错误

在此处输入图片说明

我该如何处理?

您需要包括Interwier_id属性作为隐藏字段。 使用HiddenFor扩展方法。 您没有将ID发布到服务器,这就是EF无法在DB中找到实体的原因。 假设下面的代码在BeginForm块中。

@Html.DropDownListFor(model => model.Interwier_id)

<div class="form-group" style="padding-left: 515px;">
    <div class="col-md-10">

        @Html.DropDownListFor(model => model.Status, new[]
            {
                new SelectListItem() {Text = "Подтвердить", Value = "Одобрено"},
                new SelectListItem() {Text = "Отправить в архив", Value = "Архив"},
            }, "Статус", new { @class = "form-control" })

    </div>
</div>

并更新从ID绑定到Interwier_id的属性:

[Bind(Include = "Interwier_id,...")]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM