多次发布后从viewbag / tempdata丢失数据

时间:2016-01-08 14:49:56

标签: asp.net-mvc

我的传球价值存在问题。我是MVC的初学者,我读到了ViewBagTempData,我知道它不应该工作,但我不知道如何使其工作。我的问题:

获得2个模型:AnimalVisit

在我的AnimalView中,我得到了所有动物的清单,我得到了这个动作链接:

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

它转到创建GET方法并传递了id,我得到一个视图来创建访问我可以提交它,一切都很好但是..

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

public ActionResult Create(int id)         {             动物动物= db.Animals.Find(id);             if(animal == null)             {                 return 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);
    }

1 个答案:

答案 0 :(得分:0)

ViewBag和TempData仅保留一个请求的信息。如果modelstate无效,则必须重新设置ViewBag和TempData值。