知识大全 创建自定义数据控制器基类
Posted 控制器
篇首语:卧疾丰暇豫,翰墨时间作。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 创建自定义数据控制器基类相关的知识,希望对你有一定的参考价值。
摘要 在这个Tip中 你将学到如何创建一个自定义控制器基类 让它能够为常见的数据库操作暴露一系列acton 如显示 插入 更新和删除数据
无论什么时候 你在写代码时都会发现其实你在一遍又一遍地编写着同样类型的代码 现在是时候停下来考虑一下你是否正在浪费者大量的时间 昨天 我发现在创建一个数据库驱动的ASP NET MVC应用程序时 我的确处在这样一种情形中 我不得不为应用程序中的每一个数据库表进行标准的操作——显示数据 更新数据 插入数据 删除数据 一遍又一遍地编写完全相同的代码 这种可怕的现象赋予我灵感 让我写下了今天这篇ASP NET MVC Tip
MVC控制器就是一个类(Visual Basic或C#类) 既然是类 就可以支持继承 因此 如果你发现你正在为控制器action编写重复的代码 就有必要编写一个新的基类了 让它包含一组常见的action 在这个Tip中 我们一起来创建一个数据控制器基类 它能够执行标准的数据库操作 要记住 你也可以为其他类型的常见控制器action编写基类
我建立了一个名为DataController的控制器基类 该类提供了下列公共方法
Index()——显示一个数据表中所有的数据记录
Details()——显示数据库表中的一条数据记录
Edit()——显示一个视图 其中包含一个用于编辑现有数据记录的窗体
Update()——更新数据库中的数据记录
New()——显示一个视图 用于插入新的数据库记录
Insert()——向数据库中插入一条新的数据记录
Delete()——从数据库中删除一条现有记录
由于这些方法都是公共的 所以每个方法都会暴露为一个action 你只要在Web浏览器地址栏中输入正确的URL 就能调用这些方法
DataController还包含一些受保护的方法
DBSave()——插入或更新数据库记录
DBInsert()——插入新的数据库记录
DBUpdate()——更新现有的数据库记录
DBDelete()——删除现有的数据库记录
DBGet()——获取单独一条数据库记录
由于这些方法是受保护的 所以他们不能通过URL调用 然而 你可以在派生类中调用这些方法 这些都是有用的工具方法 你可以通过调用这些方法来实现派生类的控制器action方法
最后 DataController类还提供了下列方法
DataContext——LINQ to SQL数据上下文
Table——LINQ to SQL表
IdentityColumnName——数据表中包含的标识列
这些属性也是受保护的 你可以在派生类中使用它们 但他们不会被暴露为控制器action
DataController类是一个泛型类 当你从DataController类继承一个控制器时 必需指定数据实体的类型 DataController类与LINQ to SQL一起工作 在使用DataCotroller类之前 必须先创建表示数据库对象的LINQ to SQL实体类
例如 清单 包含了一个名为HomeController的类 继承自DataController类 注意Movie类型被传到了DataController类中 Movie类是一个LINQ to SQL实体 是使用Visual Studio对象关系设计器创建的
清单 HomeController cs
using System; using System Collections Generic; using System Linq; using System Web; using System Web Mvc; using Tip Models; namespace Tip Controllers public class HomeController : DataController<Movie> /**//// <summary> /// Show Movies in a Category /// </summary> public ActionResult Category(int Id) var results = from m in this Table where m CategoryId == Id select m; return View(results);
由于HomeController类继承自DataController类 所以HomeController类自动暴露了Index() Details() Create() New() Edit() Update()和Delete()等几个action 由于向DataController传递了Movie实体 所以可以通过HomeController在Movie数据表上执行这些操作
在使用DataController类之前 你需要向应用程序的nfig文件添加一个名为dataController的连接字符串 你可以从Visual Studio对象关系设计器生成的代码中复制连接字符串并改名为dataController
要使用DataController类 还需要创建一组视图 你需要创建下面一组视图 Index aspx Details aspx Create aspx Edit aspx
在明天的Tip中 我会想你展示如何为所有控制器类只创建一次视图——创建共享视图 不过这是明天的主题 让我们回到DataController上来
不幸的是DataController太长了 不适合粘贴到blog里 你可以下载DataController类 并试用其中的示例项目 单击本文后面的链接可以下载示例代码
示例项目中包含上面列出的四个视图 你可以使用示例项目来显示 插入 更新和删除Movies数据表中的数据记录 例如 图 包含了Index aspx视图生成的页面
图 Index aspx视图
cha138/Article/program/net/201311/13301
相关参考
做开发的都知道在VS里提供了很多的验证控件比如RequiredFieldValidatorRangeValidatorRegularExpressionValidator等等他们都是继承于Base
SQL技巧:探索用户自定义数据类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用户自定义数据
JSP自定义标签实现数据字典 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 关于JSP标签的好处
异常是程序运行中发生的错误异常处理是程序设计的一部分在c#中异常处理是通过Exception基类进行的可以创建自己的异常类但这个类必须是继承自Exception基类 异常将导致不完善或者不需要的
Struts自定义标签--使用表格显示数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! app
Oracle没有自增字段这样的功能但是通过触发器(trigger)和序列(sequence)可以实现 先建一个测试表了 createtableuserlogin( id  
SQL技巧:取消用户自定义数据库对象的公共读取权限 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 PB中同时“继承”多个用户自定义数据窗口对象[3]
PB中同时“继承”多个用户自定义数据窗口对象[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&
知识大全 PB中同时“继承”多个用户自定义数据窗口对象[2]
PB中同时“继承”多个用户自定义数据窗口对象[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&
知识大全 PB中同时“继承”多个用户自定义数据窗口对象[1]
PB中同时“继承”多个用户自定义数据窗口对象[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&