ASP.NET MVC小论
前言
ASP.NET MVC作为微软官方的.NET平台下MVC解决方案,自诞生起就吸引了众多.NET平台开发人员的眼球。在经历了漫长Preview后,上个月微软终于发布了其beta版。应该说,通过我亲身实践,我认为这个框架的设计还是相当优秀的,至少从易用性来说,ASP.NET MVC要优于Java平台上的Struts和Struts2。使用Struts实现MVC时,除了要写一堆ActionForm、Action和ActionResult外,最头疼的莫过写于各种xml映射配置文件。Struts2虽然不用再写ActionForm,并且降低了侵入度(其实Struts2和Struts关系不大,而基本可以认为是WebWork的后续版本),但是仍无法避免xml配置文件。
ASP.NET MVC从一开始的设计思路就与Struts不同,它的映射是利用路由配置而非xml,从而大大降低了开发复杂度,并且比Struts要更直观,更容易上手。
可是,这并不表明ASP.NET MVC就是尽善尽美的。在我实践的过程中,发现某些地方使用起来还是不太方便,在这里小小论述一下。不妥之处,还请各位尽情批评。
别扭的视图:能不能不要让我承担逻辑
我个人认为,ASP.NET MVC第一个不太妥当的地方就是视图的实现。在这个框架中,视图是使用ASPX文件实现的。就呈现数据这一需求来说,ASP.NET MVC下一般性的做法是:控制器负责调用Model完成数据的读取,并将需要呈现的数据通过ViewData传递给视图,并选择某视图呈现。被选中的视图要负责将ViewData中相应的数据读取、分解,然后使用一定的逻辑语句将其呈现。
这个方式,就要求视图中存在一定的逻辑语句,如将ViewData中数据转换成相应类型的类型转换语句;如果需要按照某一条件呈现不同内容,则需要分支语句;而常用的表格式数据呈现需要用到循环语句。于是,我们就会看到视图中充斥着各种<%%>、if、foreach等等的东西。
当然,我不否认,良好的编写可以让这些代码整洁的出现在视图中。然而,在我的心目中,一个良好基于Web应用的MVC框架设计,其视图是不应该存在任何可执行代码的,而应该是一个单纯的模板文件,或者说含有可替换标签的页面文件,就像PHP平台下的Smarty那样。至于视图中相应的可替换标签替换成什么内容,应该是控制器的责任。设计一套良好的标签模板,对数据、分支、循环等常见任务设置相应标签,我认为是更适合ASP.NET
相关文档:
第一步 掌握一门.NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET。 ASP.NET是一个全面向对象的技术,不懂OO,那绝对学不下去!
第二步 对.NET Framework类库有一定的了解 可以通过开发Windows Form应用程序来学习.NET Framework。ASP.NET是建构在.NET Framework之上的 ......
上次我们说到了 route 路由的功能,整个mvc运行过程:
Route(路由) --> Controller(控制器)-->action(方法)
这次我们要说的就是 controller 控制器 和 action:
控制器的作用就是:当一个 Request 来的时候,首先Route 解析 找到了 对应 控制器,控制器再根据 action 决定给我们返回什么样的内容。如:
代码 ......
最近在用用户控件时,引用户控件的页面有时候会和用户控件进行数据的交互,网上好像很多人不知道何获取
写个例子说明一下
取得用户控件里面的控件并进行赋值
用户控件aspx页代码
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HeadPanel.ascx.cs" Inherits="HeadPanel" %>
& ......
页面导出Excel时,常用的直接RenderControl的方法,如果表格中有数字,在Excel中往往格式会乱,比如前面有0,但显示出来后0都被去掉了。
因此要在绑定数字的时候,手动指定一下此列的格式,让数字以文本方式显示就行了
protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
......
部门要做一个网站,我以前用的是php或asp做的,这回想改用asp.net做,主要基于两点考虑,第一:想通过asp.net学习c#及其.net框架。第二:自己又想偷懒,不想从头开始做网站,于是就想用开源的netcms来改改。于是有了我的系列文章。根据我的学习进度我会每天更新,请朋友们关注。 ......