我在跨两个视图创建模型时遇到问题。我无法找到这方面的例子,虽然我怀疑部分原因是不知道如何很好地表达问题。请参阅下文,了解我要做的事情。
我有一个名为推荐的模型,它与名为Visitor的模型有多对一的关系(访问者可以进行多个推荐)。当用户导航到网页的“推荐”部分时,系统会提示他们先填写访客信息表单。填写访客信息后,应将用户转到新表单(新视图),填写推荐信息。由于推荐信息的一部分是访客信息,我需要将一个传递给另一个。
我对此的看法是有两个单独的视图,一个用于获取访问者信息,另一个用于获取推荐信息。每个人都有一个Get和一个帖子,其中Post for Visitor返回一个RedirectToAction,其中包含推荐视图的名称和一个带有访客信息的推荐对象:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateVisitor(Visitor visitor)
{
if (ModelState.IsValid)
{
var visitorExists = db.Visitors.Any(v => v.FirstName == visitor.FirstName && v.LastName == visitor.LastName);
if (visitorExists == false)
{
db.Visitors.Add(visitor);
db.SaveChanges();
}
Referral referral = new Referral();
referral.Visitor = visitor;
return RedirectToAction("CreateReferral", referral);
}
return View("Index");
}
我们的想法是将此信息传递给下一个(推荐)表单,以便填写访问者部分,剩下要做的就是输入推荐信息。我尝试将部分创建的视图传递给Get但是Post开始抱怨说有另一种方法采用相同的模型。
//GET: Referrals/CreateReferral
public ActionResult CreateReferral(Referral referral)
{
return View(referral);
}
有没有办法传递这些不会导致Post方法投诉的信息?也许通过我可以在Get方法中使用的访客ID来创建推荐?
非常感谢任何输入。我一直试图弄清楚自己,但我们无法在网上找到相关信息,并担心走错路走得太远。
希望收到你的来信,
Yusif Nurizade