您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > MVC架构增删改操作实例
1、添加一个Model添加Model和添加普通类的操作是一样的,默认的约定是将它放在Models文件夹中。我们在Models文件夹上面点击右键,选择“添加”“LinqtoSql”,在打开的对话框中输入类名“Book”,点击“添加”按钮。编辑器会为我们打开BookInfo.dbml,从左侧服务器资源管理器中拖拽需要的数据库对象到dbml文件中,之后该文件将自动包含数据库对象对应的实例类和操作类。这个类中包含了数据库表中的记录和对记录的各种操作。每一个Book类的实例对应数据库中的一行,Book类中的每一个属性被映射到数据库中的一列。2、添加数据库上下文在Models文件夹下新建一个名为“BookDbContext”的类,编辑这个类,将该类派生自“DbContext”类,编辑后的代码如下:查看“BookInfo.dbml”文件对应的“BookInfo.designer.cs”文件,其中的BookInfoDataContext类继承了System.Data.Linq.DataContext。BookInfoDataContext代表Book在数据库中的上下文对象,通过该类使数据库和实体类关联起来需要添加System.Data.Entity的引用。3、添加数据库连接由于我们创建的是空的Mvc项目,所以在Web.config文件中,不包含任何的数据库连接字符串,我们打开Web.config文件,为它添加一个数据库连接字符串的配置:connectionStringsaddname=BookDbContextconnectionString=DataSource=.\SQLEXPRESS;InitialCatalog=Test;PersistSecurityInfo=True;IntegratedSecurity=SSPI;providerName=System.Data.SqlClient//connectionStrings我们将数据库连接的name属性设置为“BookDbContext”,这个连接会被BookDbContext类使用,并根据连接创建相应的数据库。4、为Book创建控制器和Index视图按照第一节中的步骤,我们为Book模型创建一个控制器:在文件夹“Controllers”上面点击右键“添加”“控制器”,在打开的添加控制器对话框中,将控制器的名称修改为“BookController”,基架选择中的模板选择“空控制器”,如下图:点击“添加”按钮后,VS会添加一个BookController的文件,该文件处于打开状态。编辑Index方法的代码,查找作者为Tom的图书:publicActionResultIndex(){varbooks=frombindb.Bookswhereb.Author==Tomselectb;returnView(books.ToList());}在这段代码中,db是类BookDbContext的一个实例,我们在Controller类中定义如下:BookDbContextdb=newBookDbContext();这是一个简单的Linq查询,在对数据库进行操作时,EF会检查当前的数据连接指定的数据库是否被创建,如果没有则有EF负责根据实体模型类创建数据库、数据表;如果存在,EF会将查询条件添加到Sql查询语句,再将Sql语句发送到数据库进行数据读取。在完成数据读取后,将数据转换为实体对象集合。EF对数据库的操作大致如此。在Index方法内点击右键“添加视图”,在打开的“添加视图”对话框,勾选“创建强类型视图”,在模型类列表中选择“Book(MvcHelloworld.Models)”,在支架模板列表中选择“List”,如下图:点击“添加”按钮,VS为我们在Views文件夹下创建了“Book”文件夹,并在Book文件夹中添加了文件“Index.cshtml”。Index.cshtml是我们的视图页面,我们可以把它看做一个模板,将我们的数据按照模板的格式进行输出。在这个模板中,我们使用了Razor视图引擎,在Razor中,我们可以使用@model用来指定传到视图的Model类型,访问传入视图的数据内容。我们简单的修改代码,如果你了解HTML,这将是很简单的事情:@modelIEnumerableMvcHelloworld.Models.Book@{ViewBag.Title=图书列表-MvcBook;}h2图书列表/h2p@Html.ActionLink(增加图书,Create)/ptabletrth图书名称/thth作者/thth出版社/thth价格/thth备注/thth/th/tr@foreach(variteminModel){trtd@Html.DisplayFor(modelItem=item.BookName)/tdtd@Html.DisplayFor(modelItem=item.Author)/tdtd@Html.DisplayFor(modelItem=item.Publisher)/tdtd@Html.DisplayFor(modelItem=item.Price)/tdtd@Html.DisplayFor(modelItem=item.Remark)/tdtd@Html.ActionLink(编辑,Edit,new{id=item.BookID})|@Html.ActionLink(查看,Details,new{id=item.BookID})|@Html.ActionLink(删除,Delete,new{id=item.BookID})/td/tr}/table编译并运行程序,在浏览器中输入地址:,得到的运行结果如下:5、增加Create视图“增加图书”连接需要我们有一个Create控制器和与之对应的视图。打开BookController文件,添加一个Create方法,代码如下:publicActionResultCreate(){returnView();}这个方法返回一个视图,该视图中包含了用户要输入的表单。现在我们来实现这个Create视图,我们将在这个视图中向用户显示追加数据时所需要用到的表单。在Create方法中点击鼠标右键,并点击上下文菜单中的“添加视图”。在“添加视图”对话框中勾选“创建强类型视图”,在模型类列表中选择“Book(MvcHelloworld.Models)”,在支架模板列表中选择“Create”,如下图:点击“添加”按钮,VS会在Views/Book目录下添加一个Create.cshtml文件,由于我们选择了Create支架模板,所以在VS为我们生成了一些默认的代码。在这个视图模板中,我们指定了强类型Book作为它的模型类,VS检查Book类,并根据Book类的属性,生成了对应的标签名和编辑框,我们修改标签名,使它显示中文,修改后的代码如下:@modelMvcHelloworld.Models.Book@{ViewBag.Title=新增图书-MvcBook;}h2新增图书/h2scriptsrc=@Url.Content(~/Scripts/jquery.validate.min.js)type=text/javascript/scriptscriptsrc=@Url.Content(~/Scripts/jquery.validate.unobtrusive.min.js)type=text/javascript/script@using(Html.BeginForm()){@Html.ValidationSummary(true)fieldsetlegend图书/legenddivclass=editor-label图书名称/divdivclass=editor-field@Html.EditorFor(model=model.BookName)@Html.ValidationMessageFor(model=model.BookName)/divdivclass=editor-label作者/divdivclass=editor-field@Html.EditorFor(model=model.Author)@Html.ValidationMessageFor(model=model.Author)/divdivclass=editor-label出版社/divdivclass=editor-field@Html.EditorFor(model=model.Publisher)@Html.ValidationMessageFor(model=model.Publisher)/divdivclass=editor-label价格/divdivclass=editor-field@Html.EditorFor(model=model.Price)@Html.ValidationMessageFor(model=model.Price)/divdivclass=editor-label备注/divdivclass=editor-field@Html.EditorFor(model=model.Remark)@Html.ValidationMessageFor(model=model.Remark)/divpinputtype=submitvalue=增加//p/fieldset}div@Html.ActionLink(BacktoList,Index)/div分析这段代码:@modelMvcHelloworld.Models.Book:指定了该视图模板中的“模型”强类型化成一个Book类。@using(Html.BeginForm()){}:创建一个Form表单,在表单中包含了对于Book类所生成的对应字段。@Html.EditorFor(model=model.BookName):根据模型生成模型中BookName的编辑控件(生成一个Input元素)@Html.ValidationMessageFor(model=model.BookName):根据模型生成模型中BookName的验证信息。编译项目,在浏览器中输入,查看新增界面,截图如下:6、添加Create的Postback方法在完成了添加Create视图后,我们仅是可以将添加界面显示出来,并不能实际的完成数据的添加,因为我们还没有增加按钮的处理方法,没有实际的处理添加事件。为了能够完成数据的增加,下面我们来添加一个Create的POSTBack方法,代码如下:[HttpPost]publicActionResultCreate(BOOK_INFObook){if(ModelState.IsValid){BookInfoDataContextbookInfoDataContext=newBookInfoDataContext();bookInfoDataContext.BOOK_INFO.InsertOnSubmit(book);bookInfoDataContext.SubmitChanges();returnRedirectToAction(Index);}elsereturnView(book);}这时,我们在页面上输入数据,并点击“增加”按钮时,EF就会通过这段代码来添加一行数据库记录。打开数据库,我们可以看到如下记录:7、设置实体模型的数据验证在ASP.NETMVC中,有一条作为核心的原则,就是DRY(“Don’tRepeatY
本文标题:MVC架构增删改操作实例
链接地址:https://www.777doc.com/doc-3979286 .html