MVC:一种模式,两种观点 - 将父母传给孩子

时间:2017-09-02 23:58:08

标签: asp.net-mvc view model

我在跨两个视图创建模型时遇到问题。我无法找到这方面的例子,虽然我怀疑部分原因是不知道如何很好地表达问题。请参阅下文,了解我要做的事情。

我有一个名为推荐的模型,它与名为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

0 个答案:

没有答案