ASP.NET MVC2在控制器之外创建ViewResults

时间:2010-06-27 20:08:23

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

对于ASP.NET MVC 2来说,这又是一个简单的问题。

public ActionResult MyAction(MyModel model)
    {
        if (ModelState.IsValid)
        {
           // do great stuff and redirect somewhere else

        }

        // model has errors
        return View("~/Home/Index", model);
    }

问题是我想返回一个在当前控制器之外的视图。我不想重定向,因为我想将模型交给下一个视图。 “视图”方法不允许指定控制器。上面的“返回视图......”显然不起作用。

我确信这里有一个简单的解决方法:)

3 个答案:

答案 0 :(得分:2)

如果您的视图由多个控制器使用,请将其放在“共享视图”文件夹中,而不是特定控制器的视图文件夹中。然后你可以简单地用它的名字来引用它,如果不同于动作的名称。

答案 1 :(得分:1)

public ActionResult MyAction(MyModel model)
{
    if(ModelState.IsValid)
    {
        return RedirectAction("...");
    }
    ControllerContext.RouteData.Values["controller"] = "SomeOtherController";
    return View("Index");
}

将指导您在Index文件夹下进行SomeOtherController查看。

答案 2 :(得分:0)

您需要一个扩展程序

return View("~/Path/To/View.aspx", model);