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

Posted

技术标签:

【中文标题】使用 ASP.NET MVC 4 从控制器调用另一个不同的视图【英文标题】:Calling another different view from the controller using ASP.NET MVC 4 【发布时间】:2013-09-25 11:21:51 【问题描述】:

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

第一次尝试使用 View("ViewName",model) 后的结果:

引发错误,因为该操作在控制器 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),并且我已经更改了我的目录结构,因为这是问题所在。

【问题讨论】:

【参考方案1】:

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

return View("NameOfView", Model);

或者你可以做一个局部视图并且可以返回如下:

return PartialView("PartialViewName", Model);

【讨论】:

一个错误被引发,因为动作在一个控制器中,它的视图在 \Views\Test 下 我已经修改了我的目录结构。这就是问题所在。现在你的解决方案就像一个魅力。非常感谢!正如您首先回答的那样,我接受的解决方案是您的。 我在 VS2013 中的智能感知并没有采用这种方法,即使它看起来应该存在,所以这很棒。谢谢。即使我尝试了它,直到我看到您的答案并输入了整个内容,它也没有收到它。谢谢。【参考方案2】:

要返回不同的视图,可以指定要返回的视图的namemodel,如下所示:

return View("ViewName", yourModel);

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

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

【讨论】:

您必须使用绝对路径才能从不同的文件夹返回视图。查看更新代码。【参考方案3】:
            public ActionResult Index()
            
                return View();
            


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

Return View 直接显示你的view 但是

Redirect ToAction 已执行操作

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

另外,您可以只设置 ViewName:

return View("ViewName");

完整的控制器示例:

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

这适用于 MVC 5。

【讨论】:

以上是关于使用 ASP.NET MVC 4 从控制器调用另一个不同的视图的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 4 视图

asp.net mvc 4控制器并行执行多个ajax调用

在 ASP.NET MVC 中:从 Razor 视图调用控制器操作方法的所有可能方式

如何使用 jQuery 和 ASP.NET MVC 从 AJAX 调用返回错误消息?

ASP.NET MVC 4 控制器扩展

asp.net mvc 4,模型绑定改变了线程?