2013-01-22 58 views
4

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

+0

http://www.codinghorror.com/blog/2008/05/understanding-model-view-controller.html看看这篇文章。它可能会回答你的问题。 –

回答

5

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

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

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

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

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

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

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

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

一个Account控制器定义如下,采取行动Login。控制器放置在/Controllers文件夹中的AccountController.cs文件中,并且该控制器的任何视图(Login,在本例中为文件名Login.cshtml)都放在/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视图,该视图从指定的LogOnModel加载数据。

这实际上只是触及了可能的表面。阅读ScottGu的一些精彩文章的一些在线信息,深入探讨如何使用MVC。

ASP.NET MVC Framework Overview

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

注:这些文章是因为他们对MVC 1版早在2007年写的略显陈旧,但怎样的概念模型,视图和控制器交互仍然适用。

+0

真的挖这个例子。谢谢。 –

+0

明确的解释。真棒!谢谢... :) – Nageswaran

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

+0

感谢您的资源! –

1

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

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

您可以右键单击“索引”操作,然后选择“添加视图...”这将创建atached到行动的新观点。

为了获得这一观点,你会做这样的事情:本地主机/控制器/动作 在这种情况下,它应该是:本地主机/首页/指数,其中首页=控制器,指数=动作

你应该阅读有关the MVC pattern

微软有一些很好的tutorials for beginers

+0

感谢您的资源! –

1

控制器在ASP.NET MVC是韩德尔您的应用程序逻辑的请求响应的对象。它会根据请求创建(例如HTTP请求),并且直到由View层创建的响应才可用。之后,它将是一个不可用的对象(并且GC很快就会释放其分配的内存),并且对于另一个请求,必须创建一个新的控制器对象,等等。

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