ASP.Net MVC 控制器和视图交互



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

ASP.NET MVC2 空 Web 应用程序

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

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

查询

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

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

控制器由 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

看看这篇博文,让你了解它是如何完成的

最新更新