【问题标题】:Losing data from viewbag/tempdata after multiple post多次发布后从 viewbag/tempdata 中丢失数据
【发布时间】:2016-04-13 07:08:57
【问题描述】:

我在传递价值方面遇到了问题。我是 MVC 的初学者,我读到了 ViewBagTempData,我知道它不应该工作,但我不知道如何让它工作。我的问题:

有 2 个模型:AnimalVisit

在我的 AnimalView 中,我得到了所有动物的列表,并且得到了这个 ActionLink:

@Html.ActionLink("Add Visit", "Create", "Visit", new { id = item.AnimalID }, null) 

它转到通过 id 的 Create GET 方法,我得到一个视图来创建访问我可以提交它,一切都很好,但是..

例如,如果我没有设置访问时间,模型将不会更新,并且当方法返回 Create Visit 查看我已经没有 AnimalID... 可以告诉我如何发帖失败时保持这个值吗?

public ActionResult Create(int id) { 动物 动物 = db.Animals.Find(id); 如果(动物 == 空) { 返回 HttpNotFound(); }

       TempData["AnimalID"] = id;
        return View();

    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "VisitID,AnimalID,DoctorID,VisitDate,VisitHour,Price,Recognition,Medicines,VisitDescription")] Visit visit)
    {



        if (ModelState.IsValid)
        {
            visit.DoctorID = (int)Session["Doctors"];

            db.Visits.Add(visit);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(visit);
    }

【问题讨论】:

  • 向我们展示您的创建访问操作并查看代码。

标签: asp.net-mvc


【解决方案1】:

ViewBag 和 TempData 只为一个请求保留它们的信息。如果模型状态无效,则必须重新设置 ViewBag 和 TempData 值。

【讨论】:

  • 好吧,我以前试过,但对我没用……但那次我可能只是犯了一些其他愚蠢的错误。现在我添加了 TempData["AnimalID"] = visit.AnimalID;在我的帖子方法及其工作中,谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 2011-12-15
  • 1970-01-01
相关资源
最近更新 更多