我正准备负责领导一个小型ASP的开发.net MVC应用程序.这是我第一次创建MVC应用程序,所以我很兴奋!

我仔细阅读了文档,我觉得我对MVC的工作方式有了大致的了解.然而,如果我理解正确的话,服务器控件(例如GridView)不是MVC的一部分.

我的问题是:为什么?在我的开发工作室,我非常习惯使用像GridView和MS Chart控件这样的控件,如果不使用它们进行开发,我几乎完全不知所措.这看起来几乎像是从头开始.

为什么服务器控件不可用?微软希望我在没有他们的情况下如何工作?还有什么选择?

推荐答案

我的问题是:为什么?

因为它们大多依赖于ViewState和回发模型等东西,这些模型是classic WebForms模型的一部分,在ASP中不再存在.NET MVC.这些服务器端控件依赖于将执行回发到服务器的事件,这些事件将其状态保存在隐藏字段(ViewState)中.在ASP.NET MVC您不再处理诸如Button1_Click这样的事件.在ASP.NET MVC您可以使用模型、控制器和视图.控制器负责接收用户请求、查询模型、将结果转换为视图模型,并将该视图模型传递给视图,该视图负责以某种形式显示该模型.

在ASP.NET MVC有一些HTML助手,可以用来在视图之间生成一些可重用的HTML片段.例如,你可以看看Telerik ASP.NET MVC suite名这样的助手.他们称之为控件,但与classic 的WebForms服务器端控件无关.他们只是HTML助手.

从根本上说,传统的web表单是对web的一个漏洞百出的抽象.微软在设计这个框架的时候所做的就是将现有的Windows开发人员技能带到网络上,这一技能正在获得越来越大的发展势头.但是由于Web还是一项新技术,大多数开发人员还不熟悉,所以他们创建了这个抽象来隐藏WWW的工作方式.这些开发人员习惯于在他们的Windows窗体上拖放控件,双击为他们生成一些代码的按钮,他们将数据访问逻辑放在其中,等等.多亏了WebForms,这个模型被移植到了Web应用程序开发中.HTTP协议成功地隐藏在这种称为WebForms的抽象后面.例如,你不需要知道HTML,也不需要知道Javascript,甚至不需要知道CSS就可以用WebForms创建一个网站,这真的很棒,因为这个框架为你抽象了所有这些东西.不幸的是,这样做会妨碍您轻松地充分利用低级Web技术的全部功能,而有些人在开发Web应用程序时可能需要这些技术.

什么ASP.NETMVC所做的基本上是消除这种漏洞百出的抽象,并将www以其创造者所希望的方式带给开发者.ASP.与classic 的WebForms相比,NetMVC还不够成熟,因此您无法期望找到相同范围的可用控件和小部件,但情况正在缓慢变化.

我建议你从ASP开始.净MVC:http://asp.net/mvc.继续,观看视频,玩转示例,看看ASP.NETMVC是否适合你.当然,如果你遇到了一些特殊的困难或问题,不要犹豫,回到这里来问它.

Asp.net相关问答推荐

尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19

ASP.NET Core 2.0 Razor 与 Angular/React/等

如何在 ASP.Net Core Razor 页面上重定向

部署后 ASP.Net Core Identity 登录状态丢失

C# ASP.NET Core Serilog 添加类名和方法到日志(log)

Automapper - 映射器已初始化错误

Azure WebApp Asp.NET Core 2 错误:启动应用程序时出错

Dotnet core 2.0 身份验证多模式身份 cookie 和 jwt

默认 HTTP 标头是否有任何常量?

在控制器 asp.net-core 中获取当前区域性

如何摆脱 Visual Studio 中的命名规则违规消息?

EPPlus 编号格式

从 Web API 使用 HttpClient 发布 JsonObject

Anti-Forgery Token 适用于不同的基于声明的用户

在 ASPNET 标识 2.0 中禁用用户

错误请求 - 无效的主机名 ASP.net Visual Studio 2015

解析 JSON 响应的最简单方法

Task.Run 在 ASP .NET MVC Web 应用程序中被认为是不好的做法吗?

如何更新 ASP.NET Identity 中的声明?

IIS 中的 existingResponse="PassThrough" 是什么意思?