【问题标题】:In MVC, Edit function misses the Foreign Key在 MVC 中,Edit 函数缺少外键
【发布时间】:2016-04-09 12:51:34
【问题描述】:

我有一个编辑屏幕,但出现错误。用户可以编辑对象,但外键为空。而且,这会导致一个巨大的问题。为什么它没有得到外键?这是我的代码...

第一个函数是完美的,但是带有HttpPost的函数丢失了TcmbCurrencyId的值,它是一个外键。我该如何解决这个问题?

    public ActionResult Edit(int? Id)
    {
        if (Id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        TmcbExchangeRate rate = db.TmcbExchangeRate.Where(x=>x.Id==Id).First();

        if (rate == null)
        {
            return HttpNotFound();
        }

        return View(rate);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "Id,TcmbCurrencyId,RateDate,ForexBuying,ForexSelling,BanknoteBuying,BanknoteSelling")] TmcbExchangeRate tmcbExchangeRate)
    {
        if (ModelState.IsValid)
        {
            db.Entry(tmcbExchangeRate).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(tmcbExchangeRate);
    }

【问题讨论】:

  • 您是否在视图中包含TcmbCurrencyId 作为输入(隐藏或其他方式)? @Html.HiddenFor(model => model.TcmbCurrencyId)?如果不是,则不会在提交时将其发布到控制器。只有表单中使用的值会在提交时发回控制器。

标签: c# asp.net-mvc http-post


【解决方案1】:

您可能没有在提交时发布的视图表单中包含请求的属性TcmbCurrencyId。如果不是,则不会在提交时将其发布到控制器。只有在表单中使用的值才会在提交时发布到控制器。鉴于您没有在原始帖子中包含视图,那么这是一个假设。

在视图中的表单中添加它

@Html.HiddenFor(model => model.TcmbCurrencyId)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多