ASP.Net MVC使用特定的布局页面返回相同的视图

时间:2012-10-03 23:03:17

标签: asp.net asp.net-mvc razor

我有一个视图,我使用的是特定的layout.cshtml文件,而不是主要的共享布局页面:“_LayoutExCr”

这适用于控制器的Get部分:

    //
    // GET: /Exhibitor/Create

    public ActionResult Create()
    {
        return View("Create","_LayoutExCr");
    }

这很好用 - 并显示带有特定_LayoutExCr“主”页面的创建视图。

但是,在我的创建方法的POST中,如果输入了错误的访问代码,我想使用_LayoutExCr“主”页面返回相同的视图 - 但VS2012 Express用红色下划线:

 return View(exhibitor, "_LayoutExCr");
  

最佳重载方法匹配   'System.Web.Mvc.Controller.View(string,string)'有一些无效   参数

    //
    // POST: /Exhibitor/Create

    [HttpPost]
    public ActionResult Create(Exhibitor exhibitor)
    {
        if (ModelState.IsValid)
        {
            if (exhibitor.AccessCode == "myaccesscode")
            {
                db.Exhibitors.Add(exhibitor);
                db.SaveChanges();
                return RedirectToAction("Thankyou");
            }
            else
            {
                ModelState.AddModelError("", "The Access Code provided is incorrect.");
                return View(exhibitor, "_LayoutExCr");
            }

        }

        return View(exhibitor, "_LayoutExCr");
    }

任何人都可以让我知道如何将模型返回到视图,请使用相同的布局页面吗?

谢谢,

标记

2 个答案:

答案 0 :(得分:3)

您需要传递视图名称主名称,并且他们都before模型

答案 1 :(得分:2)

http://msdn.microsoft.com/en-us/library/dd492244(v=vs.98).aspx

您想要一个不同的重载:

return View("Create", "_LayoutExCr", exhibitor);

第一个参数是视图的名称。第二个是主人的名字。第三个是您要发送到视图的模型。