【问题标题】:ASP.Net MVC Controller and View interactionASP.Net MVC 控制器和视图交互
【发布时间】:2012-05-06 10:10:52
【问题描述】:

我使用以下模板创建了一个示例MVC application

ASP.NET MVC2 空 Web 应用程序

然后添加一个名为FirstController,然后右键单击ActionResult 以添加一个View

我在浏览器中输入了http://localhost:49565/First

查询

当我们输入http://localhost:49565/First 时,控制器如何在内部知道将显示特定页面?

此外,如果我为 Controller 添加多个视图。系统将如何决定优先显示哪一个?

【问题讨论】:

  • 欢迎来到stackoverflow。您关于 MVC 的问题是关于框架的非常非常基本的元素。我建议您在此处发布问题之前查看网络上的众多初学者教程之一。例如:asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/…
  • 欢迎来到我在 SO 中的第一个问题。这是阅读 MVC 教程后的一个非常具体的问题。你知道答案吗?

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


【解决方案1】:

控制器由 MVC 框架调用,该框架使用 Global.asax.cs 中定义的路由来确定要调用的控制器和动作。有一个如下所示的默认路由:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

当应用程序收到请求时,会尝试将 URL 解析为路由的格式。如果向http://localhost:49565/ 发出请求,它将使用默认值,该默认值将转到名为HomeController 的控制器中的Index 操作。当您创建新控制器FirstController 并调用http://localhost:49565/First 时,它使用FirstController 而不是HomeController,因为它已被提供(但仍用于Index 操作)。

此外,当一个动作被调用并且没有明确定义视图时,它会寻找一个与被调用动作同名的视图。在您的情况下,它将是~/Views/First/Index.aspx

编辑

如果你想使用另一个视图,你可以在 return 语句中指定它

return View("OtherView");

它会改用~/Views/First/OtherView.aspx

【讨论】:

  • 我有两个视图1. Index.aspx and View1.aspx 每当我在浏览器中输入http://localhost:49565/First 时,如何调用View1.aspx。现在它总是显示Index.aspx页面。
  • 感谢它帮助很大。由于声誉较低,我无法投票。:)
【解决方案2】:

看看 this 博客文章让你了解它是如何完成的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多