我对 .net 框架和整个 MVC 编程理念还很陌生。有人可以澄清并给我一个基本的解释控制器如何使用 C# 与站点交互吗?我了解如何用 C# 编写代码,并且了解框架的某些方面,但我不明白它们是如何联系在一起的。
4 回答
模型- 是表示某种对象(通常是一个)的数据结构。它的目的是读取、写入和管理对底层对象的访问,目的是保持应用程序状态。
视图- 是用于向用户显示可视界面的组件,可能使用模型。它可能是一个简单的表格,也可能是一个完整的网页的复杂组合。
控制器- 是用户驱动的应用程序逻辑层,位于视图和模型之间。它处理用户交互、加载模型并将视图发送给用户。它根据用户请求确定将什么模型发送到视图。
应用程序的整体文件夹结构可能如下所示。
>> Website
>> Controllers
>> Models
>> Views
在 C# MVC 中,每个控制器Controller
的名称中必须有后缀,它们必须扩展 Controller 类并Controller
在 views 文件夹中有一个名称前缀(不带 )的文件夹。然后,此文件夹将包含与控制器上的特定操作相关的所有视图。
控制器可以包含定义为公共功能的任意数量的操作。默认情况下,当从控制器操作返回结果时,视图的名称必须与操作的名称相对应。但是,您也可以按名称指定视图。从控制器加载视图时,可以将对象作为模型发送到视图并在那里生成它的内容。
控制器可以加载任何模型并且不受任何限制。
一个Account
控制器定义如下,带有一个 action Login
。控制器放置在AccountController.cs
文件/Controllers
夹中的文件中,并且该控制器的任何视图(Login
在本例中为 filename 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 框架操作方法 - 第 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();
}
}
您可以右键单击“索引”操作并选择“添加视图...”,这将创建一个附加到该操作的新视图。
为了访问该视图,您将执行以下操作: localhost/Controller/Action 在这种情况下,它应该是: localhost/Home/Index where Home = Controller, Index = Action
你应该阅读MVC 模式
微软为初学者提供了一些非常好的教程
ASP.NET MVC 中的控制器是一个处理应用程序逻辑以响应请求的对象。它将根据请求(例如 HTTP 请求)创建,并且在视图层创建响应之前可用。之后它将成为一个不可用的对象(很快 GC 将释放其分配的内存),并且对于另一个请求,必须创建一个新的控制器对象,依此类推。
我认为根据这个定义,为什么它必须是轻量级的以及你必须如何使用它是显而易见的。