参考书 pro asp.net mvc5 ,http://asp.net/mvc
asp.net mvc是传统asp.net窗体程序的一种替代,web form 有很多被人诟病的地方。mvc不是asp.net独有的。微软模仿了Rails 。
m model 模型
v view 视图
c control 控制器
控制器里的每个方法称为action,每个action对应一个view,
view不是一个完整的页面,而是部分页面。导航,底部等共同的部分,放在layout文件中。
m 用来建立模型。呈现数据的工作在view中完成,view是一个cshtml文件,c#和html混合的文件,通过razor语法,@{}来实现在html中嵌入c#代码。
一张数据表的创建,读取、修改、删除操作,包括数据库的建立都是自动完成的。
现在有几个问题,
1.如何处理关联表的数据
2.如何控制根据模型生成的数据表,对模型的定义可以参考http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.aspx
view中有一个@model 确定了当前这个view,操作的数据模型,可以是一个list,一个类。一个记录集对于一个list,一条记录对应一个类。
模型通过control中的方法view()传给view。
3.@html 的方法有哪些?如@html.displayfor,@html.actionlink, =>等等。详情可以参考htmlhelper,http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper(v=vs.108).aspx
各种错误的状态,都有对应的类去处理,以前都是自己写错误处理。现在这个方法显然更利于测试和修改。
如HttpNotFound(),HttpstatusCode.badrequest()
为了防止伪造客户端输入可以采用@html.antiforgerytoken(), Generates a hidden form field (anti-forgery token) that is validated when the form is submitted.
4.model 的bind方法
5.LINQ查询的语法,http://msdn.microsoft.com/en-us/library/bb397926.aspx
6.lambda 表达式 http://msdn.microsoft.com/en-us/library/bb397687.aspx
7.关于查询的更多内容,参考这个链接,现在已经很少直接构建sql语句了。http://msdn.microsoft.com/en-us/library/bb738633.aspx
8.默认产生的页面,很多操作都是英文的。有没有可以设置和保存跨文化的翻译的地方,支持多种语言。?
9.自动化测试怎么做?
下面对前面看文章的时候产生的这些问题。寻找一些解答。
对模型的定义可以参考The System.ComponentModel.DataAnnotations namespace provides attribute classes that are used to define metadata for ASP.NET MVC and ASP.NET data controls. 这个定义同时影响数据库定义和客户端验证。如可以设置key,正则表达式验证,最大长度,最小长度,取值范围range,指定数据类型,指定数据的显示格式displayformat等。
修改模型定义后,可以删除对应的数据表进行重建。或者用Code First Migrations
@html是一个helper,用来产生一些html的内容。在html上又套上一层,有必要吗?
linq的好处是支持更广泛的数据库如sql,xml等。linq的功能类似sql,可以用的时候再来查如何用linq来实现。几次以后也就熟悉了。
limbda 可以理解为一段没有函数申明的函数体,左边是输入参数,右边是逻辑结果,返回是右边的逻辑运算结果。