我对.net框架和整个MVC编程理念都很陌生。有人可以澄清并给我一个基本的解释,说明控制器如何使用C#与网站进行交互?我理解如何使用C#进行编码,并且我理解框架的某些方面,但我不知道它们是如何结合在一起的。
答案 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将释放其分配的内存)和另一个请求必须创建一个新的控制器对象,依此类推。
我认为根据这个定义,很明显为什么它必须是轻量级的,以及你必须如何使用它。