了解 MVC4 控制器

本文关键字:控制器 MVC4 了解 | 更新日期: 2023-09-27 17:55:18

我对.net框架和整个MVC编程理念相当陌生。有人可以澄清并给我一个基本的解释,控制器如何使用 C# 与站点交互?我了解如何用 C# 编码,也了解框架的某些方面,但我看不出它们是如何联系在一起的。

了解 MVC4 控制器

模型 - 是表示某种对象(通常是一种)的数据结构。其目的是读取、写入和管理对基础对象的访问,目的是保持应用程序状态。

视图 - 用于向用户显示可视界面(可能使用模型)的组件。它可以是一个简单的表格,也可能是一个完整的网页的复杂组合。

控制器 - 位于视图和模型之间的用户驱动的应用程序逻辑层。它处理用户交互、加载模型并将视图发送给用户。它根据用户请求确定发送到视图的模型。

应用程序的整体文件夹结构可能如下所示。

>> Website
     >> Controllers
     >> Models
     >> Views

在 C# MVC 中,每个控制器的名称中都必须有后缀 Controller,它们必须扩展控制器类,并在 views 文件夹中具有名称前缀的文件夹(不带 Controller)。 然后,此文件夹将包含与控制器上的特定操作相关的所有视图。

控制器可以包含定义为公共函数的任意数量的操作。默认情况下,从控制器操作返回结果时,视图的名称必须与操作的名称相对应。 但是,您也可以按名称指定视图。 从控制器加载视图时,可以将对象作为模型发送到视图,并通过生成其内容来生成视图。

控制器可以加载任何模型,并且不受任何限制。

定义如下的Account控制器,具有操作Login。控制器放置在/Controllers文件夹中的AccountController.cs文件中,并且此控制器的任何视图(在本例中文件名为Login.cshtmlLogin)都放置在/Views/Account文件夹中。

注意:命名约定必须正确,因为名称在控制器和视图之间用于链接数据。

public class AccountController : Controller
{
    public ActionResult Login(string returnUrl)
    {
        if (User.Identity.IsAuthenticated)
        {
            return RedirectToAction("Index","Site");
        }
        return View("Login", new LogOnModel());
    }
}

可通过http://www.mysite.com/Account/Login访问。 如果用户经过身份验证,控制器将重定向到主站点控制器,如果用户未登录,则会显示从指定LogOnModel加载数据的Login视图。

这实际上只是触及了可能性的表面。 阅读一些关于ScottGu的一些优秀文章的在线信息,这些文章更深入,并与您讨论如何使用MVC。

ASP.NET MVC 框架概述

ASP.NET MVC 框架操作方法 - 第 1 部分第 2 部分第 3 部分第 4 部分

注意:这些文章有点过时,因为它们是在 2007 年为 MVC 版本 1 编写的,但模型、视图和控制器如何交互的概念仍然适用。

控制器在某种程度上充当内部 Web 服务。 它们向视图公开服务器端代码,并允许它们调用控制器。 就模式而言,大多数人认为控制器应该尽可能薄。 如果有繁重的工作或其他业务逻辑,则应将其抽象到应用程序的另一部分。 在我看来,控制器的存在是为视图提供要调用的东西,然后返回该数据,无论是 text/html、json 还是 xml。

这里有大量的信息,直接来自源头:http://www.asp.net/mvc/mvc4

特别是对于该网站,我强烈推荐该教程。 它将使您更清楚地了解模型、视图和控制器如何交互并相互依赖。http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

控制器是一个具有方法的类,这些方法称为操作,您可以将这些操作附加到"视图"(cshtml文件)。

//This is your controller
public class HomeController : Controller
{
    // This is your action
    public ActionResult Index()
    {
        return View();
    }
}

您可以右键单击"索引"操作,然后选择"添加视图..."这将创建一个与该操作相适应的新视图。

为了访问该视图,您将执行以下操作:本地主机/控制器/操作在这种情况下,它应该是:本地主机/主页/索引,其中主页=控制器,索引=操作

您应该阅读有关 MVC 模式的信息

Microsoft为初学者提供了一些非常好的教程

ASP.NET MVC 中的控制器是一个对象,用于处理应用逻辑以响应请求。它将根据请求(例如 HTTP 请求)创建,并且在视图层创建响应之前可用。之后,它将是一个不可用的对象(很快 GC 将释放其分配的内存),对于另一个请求,必须创建新的控制器对象,依此类推。

我认为根据这个定义,为什么它必须是轻量级的以及您必须如何使用它是显而易见的。