了解MVC4控制器

时间:2013-01-22 16:08:30

标签: c# .net web-applications asp.net-mvc-4

我对.net框架和整个MVC编程理念都很陌生。有人可以澄清并给我一个基本的解释,说明控制器如何使用C#与网站进行交互?我理解如何使用C#进行编码,并且我理解框架的某些方面,但我不知道它们是如何结合在一起的。

4 个答案:

答案 0 :(得分:6)

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

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

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

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

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

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

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

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

Account控制器定义如下,操作Login。控制器放在AccountController.cs文件夹中的/Controllers文件中,此控制器的任何视图(在此实例中为Login,文件名为Login.cshtml)都放在{{ 1}}文件夹。

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

/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视图,该视图将从指定的Login加载数据。

这实际上只是触及了可能的表面。阅读ScottGu的一些优秀文章的在线信息,这些文章将深入介绍如何使用MVC。

ASP.NET MVC Framework Overview

ASP.NET MVC Framework How To - Part 1 // Part 2 // Part 3 // Part 4

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

答案 1 :(得分:3)

控制器在某种程度上用作内部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

答案 2 :(得分:1)

控制器是一个具有方法的类,这些方法称为操作,您将这些操作转移到“视图”(cshtml文件)。

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

您可以右键单击“索引”操作并选择“添加视图...”,这将创建一个附加到该操作的新视图。

要访问该视图,您将执行以下操作:localhost / Controller / Action 在这种情况下,它应该是:localhost / Home / Index其中Home = Controller,Index = Action

您应该阅读the MVC pattern

微软有一些非常好的tutorials for beginers

答案 3 :(得分:1)

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

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