APP下载

MVC应用程序开发课程教学中存在问题浅析

2021-01-27李志刚武汉软件工程职业学院

消费导刊 2020年41期
关键词:主键程序开发控件

李志刚 武汉软件工程职业学院

高职院校在学完ASP.NET程序开发后会学习ASP.NET MVC程序开发,在学习MVC程序开发会的会有如下问题。

第一:学生不理解MVC的框架,认为分成三个框架太麻烦了,还习惯用以前学过的.NET知识来套用现在的知识,结果发现行不通。

第二:学生在学习LinqToSQL会很不习惯,发现它和以前学的SQL语句语法有较大的区别。对于LinqToSQL,学生不习惯语句从from开始写,会不自觉的用以前学过的sql方式来写。

第三:学生在学习控件器分不清控件器的作用,对于插入和增加为什么要使用两个控制器方法不理解。

第四:学生在写视图代码非常不习惯,因为以前都是拖控件的,现在需要手写代码,再加上之前的网页设计并没有学好。

第五:学生在学习验证控件的时候习惯性的想起.NET中的拖控件导致出现问题,对于用户自定义验证的代码无法理解。

第六:在用MVC进行项目设计的时候,学生会存在整体思路不清晰的问题,对于在插入数据的时候主键重复如何处理,在编辑的时候如何不修改视图,在查询的时候如何进行模糊查询和精确查询。

针对以上问题,有如下解决方案:

第一:在开始MVC教学之前,一定要跟学生强调,MVC的开发模式和你们之前学过的桌页程序开发和ASP.NET区别都很大,它是三层架构,每层架构各司其职。M是数据层,对数据的操作包括增加删除修改都放在这一层,V是视图层,就是页面最后的呈现在这一层,C是控制层,哪一个数据和哪一个视图进行关联由控制层来实现。

第二:LinqToSQL有两种写法,一种是基于表达式的查询,一种是函数式查询。一般要求学生掌握函数的查询,对表达式的查询只需要看懂不需要会写。查询分为投影查询,条件查询,排序查询,分页查询,聚合查询和连接查询。其中聚合查询只能用函数式查询。学生对连接查询问题较大,在复杂的连接查询的时候需要把当前的查询结果保存起来然后再重命名方便后面调用。模糊查询也和以前学的.NET完全不一样,不能用like和%,而应该用containts来实现。如果有学生实在不会写LinqToSQL,可以先自动生成相应的LinqToSQL,然后在自动生成的代码上页修改。

第三:不管是插入和修改都应该包括两个功能:一个是用户刚进入到这个页面看到的数据呈现功能,另一个是插入或修改的功能,对于前者来说需要用到HTPPGET方法,也就是取数据方法,对于后者需要用到HTTPPOST方法,也就是数据传递方法。

第四:在学习视图之前需要先给学生复习网页设计的基本知识,包括HTML,CSS等基础知识。对于输入类的辅助方法中的DropDownLis的方法要注意要指定来自哪张表、表的显示字段和表存的字段。ActionLink辅助方法适合于跳到相应的控件器中,需要指定连接的名称、相应控件器的名称和相应action名称,如果目标控件器和源控件器在一个控制器中,可以省略控制器的名称,如果需要进行页面传值,这需要加上类似new{id=1}的代码。在编辑页面会存在一个问题:自动生成的编辑视图会自动把主键隐藏,用户进行修改的时候不知道修改的是哪一条数据,如果在视图中把主键给显示出来,主键有文框框和标签两种形式,如果主键是文本框表示,可以对主键进行修改,也会报错;如果主键是标签,又会因为主键不能修改导致相应的LinqToSQL的代码是错误的。对于这个问题,可以首先把主键进行隐藏,然后再把主键在视图中显示一次,但控件用的是标签控件,这样我们在修改数据的时候调用的是隐藏的主键文本框,而我们又能看到标签控件的主键,这样既可以看到主键又可以修改数据,很好的解决了存在的问题。如果学生实在不会写视图,可以先自动生成视图,然后在生成的视图中去添加或删除一些内容。

第五:常用的验证属性包括Required属性、StringLength属性、Regular Expression属性、Range属性、DataType属性、Compare属性。在教学过程中可以进行类比教学,Required属性相当于.NET中的非空验证,Compare属性相当于.NET中的比较验证,Range属性相当于范围验证,RegularExpression属性相当于.NET中的正则表达式验证。而StringLength属性主要是用于限制输入长符的长度的,比如要求密码在6-16位,用户名不少于6位;DataType属性也可以对正则表达式进行验证。

第六:在进行MVC项目设计时,一定要首先把数据库设计好。比如教务管理系统,包括学生管理,教师管理,成绩管理等。对于学生管理来说,学生表中的学院,专业,班级都可以为查询条件,所以除了学生表外,还需要建立学院表、专业表和班级表,在学生表中的学院、专业和班级都应该用代码。在对学生表进行增加操作时,要注意要考虑主键是否重复,所以首先要根据学号进行查询,如果学号没有重复再做插入操作。当修改数据时,一定要注意哪些字段可以修改,哪些不能修改,对于学院,专业和班级这些字段不应该用文本框,防止输入不合理的数据,应该用下拉框,下拉框的值通过数据库中取。当通过学号,姓名,学院进行查询时,学号和姓名都是模糊查询,而学院是用下拉框,下拉框应该包括全部和具体的学院,当用户选择全部时,查询所有学院的信息,当用户选择具体某个学院时,查询该学院的信息,所以根据学院选择的内容不同,需要有不同的linqtosql语句。

猜你喜欢

主键程序开发控件
基于Go 实现的分布式主键系统研究
基于外键的E-R图绘制方法研究
APP应用程序开发模式探究
关于.net控件数组的探讨
基于TestStand的自动检测程序开发
基于嵌入式系统Windows CE的应用程序开发
基于App inventor 2手机程序开发过程的学习与实——以“喵喵定时器”APP开发为例
ASP.NET服务器端验证控件的使用
数据库主键设置探讨
基于嵌入式MINIGUI控件子类化技术的深入研究与应用