`
anzitlan10
  • 浏览: 19108 次
  • 性别: Icon_minigender_1
  • 来自: 柳州
社区版块
存档分类
最新评论

Asp.net MVC 实例

阅读更多
MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC,并在vs2010中已经内置了MVC的相关功能。如果使用vs2008,需要下载安装Service Pack 1和ASP.NET MVC Framework。MVC现在已经是2.0的版本。

选择相关开发语言,创建一个 ASP.NET MVC Web Application 项目,选择不需要单元测试,这样生成了一个MVC框架,按Ctrl+F5运行,可看到一个欢迎主页。

注意:使用MVC后不是按链接文件来访问页面,而是通过控制器实现路由链接。

我们通过一个简单的增删查改的功能来体会一下MVC开发的过程。

第一步:模块开发

首先我们创建一个简单的表格:test,该表格只有两个字段:id和name。并创建一个数据类,在Models文件夹中创建一个类,代码如下:



代码
//Test.csusing System;using System.Collections.Generic;using System.Linq;using System.Web; namespace MvcWeb.Models{    public class Test    {        private int _id = -1;         public int id        {            get { return _id; }            set { _id = value; }        }         public  String name {get;set;}    }}




然后在Models文件夹中创建一个文件夹:Maping,在此文件中新建一个LINQ to Sql,将test表拖进设计器中,保存。

最后在Models文件夹中新建一个类:TestModel.cs,输入如下代码:



代码
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data.Linq;using MvcWeb.Models.Maping; namespace MvcWeb.Models{    public static class TestModel    {        private static TestDbMapingDataContext testDb = new TestDbMapingDataContext();         //返回记录总数        public static int Count()        {            return testDb.test.Count();        }         //分页列表        public static List<Test> GetList(int page, int pageSize)        {            var query = (from c in testDb.test orderby c.id ascending select c).Skip((page - 1) * pageSize).Take(pageSize);            List<Test> result = new List<Test>();            foreach (var t in query)                result.Add(FillRecord(t));            return result;        }         //列表        public static List<Test> GetList()        {            var query = (from c in testDb.test orderby c.id ascending select c);            List<Test> result = new List<Test>();            foreach (var t in query)                result.Add(FillRecord(t));            return result;        }         //修改和插入保存        public static long Save(Test myTest)        {            try            {                test t = (from c in testDb.test where c.id == myTest.id select c).FirstOrDefault();                if (t == null)                {                    t = new test();                    t.id = myTest.id;                    t.name = myTest.name;                    testDb.test.InsertOnSubmit(t);                }                else                {                    t.name = myTest.name;                }                testDb.SubmitChanges();                return t.id;            }            catch(ChangeConflictException ce)            {                testDb.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues);                testDb.SubmitChanges();            }            return -1;        }         //删除记录        public static bool Delete(int id)        {            try            {               test t = (from c in testDb.test where c.id == id select c).FirstOrDefault();                testDb.test.DeleteOnSubmit(t);                 testDb.SubmitChanges();                return t != null;            }            catch (ChangeConflictException ce)            {                testDb.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues);                testDb.SubmitChanges();            }            return false;        }         //取一条记录        public static Test GetItem(int id)        {            test t = (from c in testDb.test where c.id == id select c).FirstOrDefault();            return FillRecord(t);        }         //构造数据对象        private static Test FillRecord(test i)        {            Test result = null;            if (i != null)            {                result = new Test();                result.id = i.id;                result.name = i.name;            }            return result;        }    }}




第二步:控制器开发

在Controllers文件夹中右键选择Controller,将生成一个控制器,将文件名改为:TestController.cs,并将代码做些修改,以访问模块:



代码
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using MvcWeb.Models; namespace MvcWeb.Controllers{    public class TestController : Controller    {        //        // GET: /Test/        int pageSize = 3;         public ActionResult Index(int page)        {            if (page * pageSize > TestModel.Count()) page = page - 1;            if (page <= 0) page = 1;             ViewData["page"] = page;             var model = TestModel.GetList(page, pageSize);             return View(model);        }         //        // GET: /Test/Details/5         public ActionResult Details(int id)        {            var model = TestModel.GetItem(id);            return View(model);        }         //        // GET: /Test/Create         public ActionResult Create()        {            Test mytest = new Test();            return View(mytest);        }          //        // POST: /Test/Create         [HttpPost]        public ActionResult Create(int id,FormCollection collection)        {            try            {                // TODO: Add insert logic here                Test mytest = new Test();                UpdateModel(mytest, collection.ToValueProvider());                if(mytest.name == null)                    ViewData.ModelState.AddModelError("name", "userName not specified.");                if (!ViewData.ModelState.IsValid)                    throw new InvalidOperationException();                TestModel.Save(mytest);                 return RedirectToAction("Index?page=1");                            }            catch(InvalidOperationException ex)            {                return View(new Test());            }        }                //        // GET: /Test/Edit/5         public ActionResult Edit(int id)        {            var model = TestModel.GetItem(id);            return View(model);        }         //        // POST: /Test/Edit/5         [HttpPost]        public ActionResult Edit(int id, FormCollection collection)        {            try            {                // TODO: Add update logic here                Test mytest = new Test();                 UpdateModel(mytest, collection.ToValueProvider());                 TestModel.Save(mytest);                 return RedirectToAction("Index?page=1");            }            catch            {                return View();            }        }         //        // GET: /Test/Delete/5         public ActionResult Delete(int id)        {            var model = TestModel.GetItem(id);            return View(model);        }         //        // POST: /Test/Delete/5         [HttpPost]        public ActionResult Delete(int id, FormCollection collection)        {            try            {                // TODO: Add delete logic here                TestModel.Delete(id);                return RedirectToAction("Index", new { page = 1 });            }            catch            {                return View();            }        }    }}




第三步:视图开发

在控制器的Index方法中按右键,选择“Add View”,作出如下图的选择:



即在Views/Test文件夹下面生成一个视图:Index.aspx,因为我们使用了分页设计,所以在文件后面加上如代码:



      <%= Html.ActionLink("Create New", "Create") %>        <% =Html.ActionLink("<< 前一页", "Index", new { page = (int)ViewData["Page"] - 1 })%>        <% =Html.ActionLink("后一页 >>", "Index", new { page = (int)ViewData["Page"] + 1 })%>




打开Views/Home/Index.aspx,加入一个对Test页面的链接:



<%= Html.ActionLink("测试", "Index?page=1", "Test")%>




按上面的方法在控制器的Create, Edit, Delete生成相关视图,因为主页使用了分页,所以要将返回主页的链接“Back to List”,略作修改:“Index?page=1”。我们可以看看生成的Create.aspx的代码:



代码
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcWeb.Models.Test>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">     Create</asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">     <h2>Create</h2>     <% using (Html.BeginForm()) {%>        <%= Html.ValidationSummary(true) %>         <fieldset>            <legend>Fields</legend>                        <div class="editor-label">                <%= Html.LabelFor(model => model.id) %>            </div>            <div class="editor-field">                <%= Html.TextBoxFor(model => model.id) %>                <%= Html.ValidationMessageFor(model => model.id) %>            </div>                        <div class="editor-label">                <%= Html.LabelFor(model => model.name) %>            </div>            <div class="editor-field">                <%= Html.TextBoxFor(model => model.name) %>                <%= Html.ValidationMessageFor(model => model.name) %>            </div>                        <p>                <input type="submit" value="Create" />            </p>        </fieldset>     <% } %>     <div>        <%= Html.ActionLink("Back to List", "Index?page=1") %>    </div> </asp:Content>




完成任务,按Ctrl+F5运行,在主页上点击“测试”,即可体验增删查改的功能。

分享到:
评论

相关推荐

    ASP.NET MVC实例

    在"ASP.NET MVC实例"中,我们有两个具体的示例项目——NerdDinner和My Movie List,这两个都是为了帮助初学者理解并掌握ASP.NET MVC框架而设计的。 NerdDinner是一个经典的教程项目,它模拟了一个晚餐聚会的管理...

    asp.Net mvc4 实例

    ASP.NET MVC4是一种基于Microsoft .NET Framework的轻量级、模型-视图-控制器(MVC)框架,用于构建可维护、高性能的Web应用程序。在VS2010集成开发环境中,结合SQL2008数据库,我们可以创建出功能丰富的Web应用。...

    基于ASP.NET MVC项目实例

    【ASP.NET MVC项目实例详解】 ASP.NET MVC是一种用于构建动态网站和Web应用程序的框架,它由微软开发,基于模型(Model)、视图(View)和控制器(Controller)的设计模式。本项目实例是一个商品信息管理系统,旨在帮助...

    Asp.Net MVC案例教程

    Asp.Net MVC是一种基于模型-视图-控制器(Model-View-Controller)设计模式的Web应用程序开发框架。它由微软公司推出,旨在提供更灵活、可维护和测试友好的方式来构建动态网站、Web应用程序和服务。本教程将通过一...

    asp.net MVC 实例

    ASP.NET MVC 是微软提供的一种基于...通过这个"asp.net MVC 实例",你可以亲手实践以上知识点,从基础到进阶,全面掌握ASP.NET MVC的开发技能。在实际操作中,你将更深刻地理解MVC模式如何提升Web开发的效率和质量。

    ASP.NET MVC项目实例

    ASP.NET MVC作为微软官方的.NET平台下MVC解决方案,自诞生起就吸引了众多.NET平台开发人员的眼球。ASP.NET MVC从一开始的设计思路就与Struts不同,它的映射是利用路由配置而非xml,从而大大降低了开发复杂度,并且比...

    一个完整的asp.net mvc架构网站实例

    这个实例提供了一个完整的ASP.NET MVC网站的详细结构和实现,可以帮助开发者了解和学习如何创建高效、可维护的Web应用。 **ASP.NET MVC架构** 1. **模型(Model)**:模型是应用程序的核心部分,它处理业务逻辑和...

    asp.net mvc实例源代码 

    通过深入学习这个ASP.NET MVC实例,开发者不仅可以理解MVC模式的工作原理,还能掌握如何在实际项目中组织代码、处理用户请求和响应、以及如何与数据库交互。这有助于提升Web开发技能,为创建高效、可维护的Web应用...

    ExtJs+ASP.NET MVC实例

    **ExtJs+ASP.NET MVC 实例详解** 在现代Web应用开发中,前端界面的交互性和动态性变得越来越重要。`ExtJs`是一个强大的JavaScript框架,它提供了丰富的组件库和强大的数据管理功能,使得构建复杂的用户界面变得简单...

    asp.net mvc实例

    ASP.NET MVC(Model-View-Controller)是一种用于构建动态网站的框架,由微软开发并提供支持,它结合了模式、视图和控制器的设计理念,旨在提高软件的可测试性和可维护性。本教程将深入探讨ASP.NET MVC的核心概念、...

    微信支付接口V3.3.7 asp.net mvc实例

    VS 2013 C# asp.net mvc 写的,基本的接口都测试过了. 分享给大家. 其中有一个商户号的字段,对应邮件中是 machId,请开发人员注意了, 不要搞错. JS 方式付款不需要证书,但退款需要证书.需要在服务器上安装一下. 有...

    asp.net mvc 实例

    这个实例显然演示了如何在ASP.NET MVC环境中操作数据库,让我们详细了解一下涉及的关键知识点。 首先,`asp.net mvc` 框架是基于 Model-View-Controller(MVC)设计模式的,它将应用程序分为三个主要部分:模型...

    asp.net mvc 示例项目

    ASP.NET MVC 是微软提供的一种基于模型-视图-控制器(Model-View-Controller)模式的Web应用程序开发框架。它允许开发者使用HTML、CSS和JavaScript构建动态、数据驱动的Web应用,同时提供了强大的测试支持和对现有...

    ASP.NET MVC 项目集合.zip

    ASP.NET MVC 是微软开发的一款用于构建动态Web应用程序的框架,它结合了ASP.NET的优势和Model-View-Controller(MVC)设计模式的灵活性。在这个"ASP.NET MVC 项目集合.zip"压缩包中,可能包含了多个ASP.NET MVC项目...

    Asp.net MVC 3实例学习之ExtShop系列最终源代码

    【Asp.net MVC 3 实例学习:ExtShop 系列最终源代码】 Asp.net MVC 3 是微软推出的一款基于模型-视图-控制器(Model-View-Controller)架构的Web应用程序开发框架,它是Asp.net技术的一个重要分支,为开发者提供了...

    Asp.net Mvc官方源代码

    ASP.NET MVC是一个开源的Web应用程序框架,由微软公司开发并维护,用于构建可维护、高性能的Web应用。这个框架基于模型-视图-控制器(MVC)设计模式,提供了清晰的分离关注点,使得开发者能够更高效地进行开发。本文...

    ASP.NET MVC5 bootstrap 小例子

    ASP.NET MVC5是一个强大的Web应用程序开发框架,由微软公司提供,它结合了ASP.NET、Model-View-Controller(MVC)设计模式和 razor 视图引擎,为开发者提供了构建高效、可测试和易于维护的Web应用的能力。...

    ASP.NET MVC 实例 教程

    ASP.NET MVC 是微软提供的一种基于模型-视图-控制器(Model-View-Controller)设计模式的Web应用程序开发框架。这个框架使得开发者能够更清晰地分离业务逻辑、数据处理和用户界面,从而提高代码的可测试性和可维护性...

    【全网首发】ASP.NET MVC4开发指南(附带源码)

    ASP.NET MVC4是一种基于Microsoft .NET Framework的开源Web应用程序框架,设计用于构建可维护性和测试性的动态网站。这个"ASP.NET MVC4开发指南"提供了一套全面的学习资源,旨在帮助开发者掌握这一强大的Web开发技术...

Global site tag (gtag.js) - Google Analytics