使用ASP.NET MVC 4从控制器调用另一个不同的视图

时间:2013-09-20 06:49:39

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

我有一个带有提交按钮的视图(Index.cshtml)。单击提交按钮时,它会调用控制器(TestController.cs)中的操作(Action01),因此在操作结束时,我希望返回到调用者(Index.cshtml)视图,并将自定义视图模型作为参数。我该怎么做?

使用View(“ViewName”,模型)首次尝试后的结果:

引发错误,因为操作在控制器Test中,所以返回,它正在搜索\ Views \ Tests \ Index,而我的索引页面位于\ Views \ Home \ Index。

未找到视图“索引”或其主控,或者没有视图引擎支持搜索的位置。搜索了以下位置:

~/Views/Test/Index.aspx
~/Views/Test/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/Test/Index.cshtml
~/Views/Test/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml

最终解决方案:

我使用过return View("ViewName", model),我已经改变了我的目录结构,因为它就是问题。

5 个答案:

答案 0 :(得分:84)

您可以直接返回不同的视图,如:

return View("NameOfView", Model);

或者您可以制作部分视图,并可以返回:

return PartialView("PartialViewName", Model);

答案 1 :(得分:42)

要返回其他视图,您可以指定要返回的视图的namemodel,如下所示:

return View("ViewName", yourModel);

如果视图位于视图文件夹下的不同文件夹中,则使用以下绝对路径:

return View("~/Views/FolderName/ViewName.aspx");

答案 2 :(得分:3)

您必须在Controller Action方法中指定自定义视图的名称及其相关模型。

public ActionResult About()
{            
   return View("NameOfViewYouWantToReturn",Model); 
}

答案 3 :(得分:0)

此外,您只需设置ViewName:

return View("ViewName");

完整控制器示例:

public ActionResult SomeAction() {
    if (condition)
    {
        return View("CustomView");
    }else{
        return View();
    }
}

这适用于MVC 5。

答案 4 :(得分:0)

            public ActionResult Index()
            {
                return View();
            }


            public ActionResult Test(string Name)
            {
                return RedirectToAction("Index");
            }

返回视图

直接显示您的HTML页面,但

重定向到动作

已执行动作