ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:299.12KB ,
资源ID:12812193      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12812193.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MVC架构增删改操作实例.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MVC架构增删改操作实例.docx

1、MVC架构增删改操作实例1、添加一个Model添加Model和添加普通类的操作是一样的,默认的约定是将它放在Models文件夹中。我们在Models文件夹上面点击右键,选择“添加”“Linq to Sql”,在打开的对话框中输入类名“Book”,点击“添加”按钮。编辑器会为我们打开BookInfo.dbml,从左侧服务器资源管理器中拖拽需要的数据库对象到dbml文件中,之后该文件将自动包含数据库对象对应的实例类和操作类。这个类中包含了数据库表中的记录和对记录的各种操作。每一个Book类的实例对应数据库中的一行,Book类中的每一个属性被映射到数据库中的一列。2、添加数据库上下文在Models文

2、件夹下新建一个名为“BookDbContext”的类,编辑这个类,将该类派生自“DbContext”类,编辑后的代码如下:查看“BookInfo.dbml”文件对应的“BookInfo.designer.cs”文件,其中的BookInfoDataContext类继承了System.Data.Linq.DataContext。BookInfoDataContext代表Book在数据库中的上下文对象,通过该类使数据库和实体类关联起来需要添加System.Data.Entity的引用。3、添加数据库连接由于我们创建的是空的Mvc项目,所以在Web.config文件中,不包含任何的数据库连接字符串,我

3、们打开Web.config文件,为它添加一个数据库连接字符串的配置: 我们将数据库连接的name属性设置为“BookDbContext”,这个连接会被BookDbContext类使用,并根据连接创建相应的数据库。4、为Book创建控制器和Index视图按照第一节中的步骤,我们为Book模型创建一个控制器:在文件夹“Controllers”上面点击右键 “添加” “控制器”,在打开的添加控制器对话框中,将控制器的名称修改为“BookController”,基架选择中的模板选择“空控制器”,如下图:点击“添加”按钮后,VS会添加一个BookController的文件,该文件处于打开状态。编辑Ind

4、ex方法的代码,查找作者为Tom的图书: public ActionResult Index() var books = from b in db.Books where b.Author = Tom select b; return View(books.ToList(); 在这段代码中,db是类BookDbContext的一个实例,我们在Controller类中定义如下:BookDbContext db = new BookDbContext();这是一个简单的Linq查询,在对数据库进行操作时,EF会检查当前的数据连接指定的数据库是否被创建,如果没有则有EF负责根据实体模型类创建数据库、

5、数据表;如果存在,EF会将查询条件添加到Sql查询语句,再将Sql语句发送到数据库进行数据读取。在完成数据读取后,将数据转换为实体对象集合。EF对数据库的操作大致如此。在Index方法内点击右键 “添加视图”,在打开的“添加视图”对话框,勾选“创建强类型视图”,在模型类列表中选择“Book(MvcHelloworld.Models)”,在支架模板列表中选择“List”,如下图:点击“添加”按钮,VS为我们在Views文件夹下创建了“Book”文件夹,并在Book文件夹中添加了文件“Index.cshtml”。Index.cshtml是我们的视图页面,我们可以把它看做一个模板,将我们的数据按照模

6、板的格式进行输出。在这个模板中,我们使用了Razor视图引擎,在Razor中,我们可以使用model 用来指定传到视图的 Model 类型,访问传入视图的数据内容。我们简单的修改代码,如果你了解HTML,这将是很简单的事情:model IEnumerable ViewBag.Title = 图书列表 - MvcBook;图书列表 Html.ActionLink(增加图书, Create) 图书名称 作者 出版社 价格 备注 foreach (var item in Model) Html.DisplayFor(modelItem = item.BookName) Html.DisplayFor

7、(modelItem = item.Author) Html.DisplayFor(modelItem = item.Publisher) Html.DisplayFor(modelItem = item.Price) Html.DisplayFor(modelItem = item.Remark) Html.ActionLink(编辑, Edit, new id=item.BookID ) | Html.ActionLink(查看, Details, new id=item.BookID ) | Html.ActionLink(删除, Delete, new id=item.BookID )

8、 编译并运行程序,在浏览器中输入地址:http:/localhost:xxx/Book,得到的运行结果如下:5、增加Create视图“增加图书”连接需要我们有一个Create控制器和与之对应的视图。打开BookController文件,添加一个Create方法,代码如下: public ActionResult Create() return View(); 这个方法返回一个视图,该视图中包含了用户要输入的表单。现在我们来实现这个Create视图,我们将在这个视图中向用户显示追加数据时所需要用到的表单。在Create方法中点击鼠标右键,并点击上下文菜单中的“添加视图”。在“添加视图”对话框中勾

9、选“创建强类型视图”,在模型类列表中选择“Book(MvcHelloworld.Models)”,在支架模板列表中选择“Create”,如下图:点击“添加”按钮,VS会在Views/Book目录下添加一个Create.cshtml文件,由于我们选择了Create支架模板,所以在VS为我们生成了一些默认的代码。在这个视图模板中,我们指定了强类型Book作为它的模型类,VS检查Book类,并根据Book类的属性,生成了对应的标签名和编辑框,我们修改标签名,使它显示中文,修改后的代码如下:model MvcHelloworld.Models.Book ViewBag.Title = 新增图书 - M

10、vcBook;新增图书using (Html.BeginForm() Html.ValidationSummary(true) 图书 图书名称 Html.EditorFor(model = model.BookName) Html.ValidationMessageFor(model = model.BookName) 作者 Html.EditorFor(model = model.Author) Html.ValidationMessageFor(model = model.Author) 出版社 Html.EditorFor(model = model.Publisher) Html.Va

11、lidationMessageFor(model = model.Publisher) 价格 Html.EditorFor(model = model.Price) Html.ValidationMessageFor(model = model.Price) 备注 Html.EditorFor(model = model.Remark) Html.ValidationMessageFor(model = model.Remark) Html.ActionLink(Back to List, Index)分析这段代码:model MvcHelloworld.Models.Book:指定了该视图模

12、板中的“模型”强类型化成一个Book类。using (Html.BeginForm() :创建一个Form表单,在表单中包含了对于Book类所生成的对应字段。Html.EditorFor(model = model.BookName):根据模型生成模型中BookName的编辑控件(生成一个Input元素)Html.ValidationMessageFor(model = model.BookName):根据模型生成模型中BookName的验证信息。编译项目,在浏览器中输入http:/localhost:xxx/Book/Create,查看新增界面,截图如下:6、添加Create的Postbac

13、k方法在完成了添加Create视图后,我们仅是可以将添加界面显示出来,并不能实际的完成数据的添加,因为我们还没有增加按钮的处理方法,没有实际的处理添加事件。为了能够完成数据的增加,下面我们来添加一个Create的POSTBack方法,代码如下: HttpPost public ActionResult Create(BOOK_INFO book) if (ModelState.IsValid) BookInfoDataContext bookInfoDataContext = new BookInfoDataContext(); bookInfoDataContext.BOOK_INFO.In

14、sertOnSubmit(book); bookInfoDataContext.SubmitChanges(); return RedirectToAction(Index); else return View(book); 这时,我们在页面上输入数据,并点击“增加”按钮时,EF就会通过这段代码来添加一行数据库记录。打开数据库,我们可以看到如下记录:7、设置实体模型的数据验证在ASP.NET MVC中,有一条作为核心的原则,就是DRY(“Dont Repeat Yourself,中文意思为:不要让开发者重复做同样的事情,即“一处定义、处处可用”)原则。这样可以减少开发者的代码编写量,同时也更加

15、便于代码的维护。ASP.NET MVC与EF code-first提供的默认验证规则就是一个实现DRY原则的很好的例子。你也可以在模型类中显式地追加一个验证规则,然后在整个应用程序中都使用这个验证规则。打开Book模型文件,添加System.ComponentModel.DataAnnotations的引用,并修改实体类的代码如下: public class Book public int BookID get; set; Required(ErrorMessage=必须输入图书名称) StringLength(maximumLength:100, MinimumLength=1, Error

16、Message=最多允许输入100个字符) public string BookName get; set; Required(ErrorMessage = 必须输入作者名称) public string Author get; set; Required(ErrorMessage = 必须输入出版社) public string Publisher get; set; public decimal Price get; set; public string Remark get; set; 将数据库中之前生成的数据库db_Book删除掉,重新生成解决方案,打开新增页面,不输入任何数据的时候点

17、击“增加”按钮,这个时侯,界面上会出现一些提示信息,并且阻止了我们进行数据的提交操作。界面如下:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using MvcStudy.Models;namespace MvcStudy.Controllers public class BookController : Controller public ActionResult Index() BookInfoDataContext bookInfo

18、DataContext = new BookInfoDataContext(); var books = from b in bookInfoDataContext.BOOK_INFO select b; return View(books.ToList(); public ActionResult Create() return View(); HttpPost public ActionResult Create(BOOK_INFO book) if (ModelState.IsValid) BookInfoDataContext bookInfoDataContext = new Boo

19、kInfoDataContext(); bookInfoDataContext.BOOK_INFO.InsertOnSubmit(book); bookInfoDataContext.SubmitChanges(); return RedirectToAction(Index); else return View(book); public ActionResult Edit(int bookID) BookInfoDataContext bookInfoDataContext = new BookInfoDataContext(); BOOK_INFO book = bookInfoData

20、Context.BOOK_INFO.First(b = b.BOOK_ID = bookID); if (book = null) return RedirectToAction(Index); return View(book); HttpPost public ActionResult Edit(BOOK_INFO newBook) try BookInfoDataContext bookInfoDataContext = new BookInfoDataContext(); BOOK_INFO oldBook = bookInfoDataContext.BOOK_INFO.First(b

21、 = b.BOOK_ID = newBook.BOOK_ID); UpdateModel(oldBook); bookInfoDataContext.SubmitChanges(); return RedirectToAction(Details, new bookID = newBook.BOOK_ID ); catch (Exception ex) ModelState.AddModelError(, 修T改?失败,?请?查看详细?错误信?息: + ex.Message); return View(newBook); public ActionResult Details(int book

22、ID) BookInfoDataContext bookInfoDataContext = new BookInfoDataContext(); BOOK_INFO book = bookInfoDataContext.BOOK_INFO.First(p = p.BOOK_ID = bookID); if (book = null) return RedirectToAction(Index); return View(book); public ActionResult Delete(int bookID) BookInfoDataContext bookInfoDataContext =

23、new BookInfoDataContext(); BOOK_INFO book = bookInfoDataContext.BOOK_INFO.First(p = p.BOOK_ID = bookID); if (book = null) return RedirectToAction(Index); return View(book); HttpPost public ActionResult Delete(int bookID, FormCollection collection) BookInfoDataContext bookInfoDataContext = new BookInfoDataContext(); BOOK_INFO book = bookInfoDataContext.BOOK_INFO.First(p = p.BOOK_ID = bookID); bookInfoDataContext.BOOK_INFO.DeleteOnSubmit(book); bookInfoDataContext.SubmitChanges(); return RedirectToAction(Index); 编辑界面:删除界面:

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2