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

use*_*552 45 asp.net-mvc asp.net-mvc-4

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

结果后的第一次尝试使用视图("视图名",模型):

引发错误,因为操作在控制器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
Run Code Online (Sandbox Code Playgroud)

最终解决方案

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

Nee*_*eel 89

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

return View("NameOfView", Model);
Run Code Online (Sandbox Code Playgroud)

或者您可以进行局部视图,并可以返回如下:

return PartialView("PartialViewName", Model);
Run Code Online (Sandbox Code Playgroud)

  • 我在VS2013中的智能感知并没有采用这种方法,即使它看起来应该存在,所以这很好.谢谢.即使我尝试过它,直到我看到你的答案并输出整个东西之后它才会捡起来.谢谢. (2认同)

Jat*_*til 47

返回不同的视图,您可以指定name要返回和观点model如下:

return View("ViewName", yourModel);
Run Code Online (Sandbox Code Playgroud)

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

return View("~/Views/FolderName/ViewName.aspx");
Run Code Online (Sandbox Code Playgroud)


Dia*_*ani 7

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


            public ActionResult Test(string Name)
            {
                return RedirectToAction("Index");
            }
Run Code Online (Sandbox Code Playgroud)

Return View直接显示你的view但是

Redirect ToAction 动作被执行