ASP.NET MVC3 从零开始…

ASP.NET MVC3 从零开始一步步构建Web 转 http://developer.51cto.com/art/201203/323237.htm

http://v.youku.com/v_show/id_XMzc2NTcxNDY4.html

http://www.soku.com/search_video/q_思胜.net培训郝冠军

http://www.soku.com/search_video/q_ASP.NET MVC 3 开发实践系列课

 

http://down.51cto.com/data/466127

http://www.cnblogs.com/highend/archive/2011/04/14/aspnet_mvc3_web_pages.html

ASP.NET MVC3 从零开始一步步构建Web

微软更新速度一直都是很快,目前MVC4.0Beta已经发布了,而我还在刚刚起步MVC3.0。本文是MVC的基础,构建最简单的MVC项目。以后会陆续发布更新。

开发工具:VS2010+MSSQL2005,需要使用MVC3.0

环境配置

第一步:到官方网站下载MVC3,提供了简体中文。先安装 AspNetMVC3ToolsUpdateSetup.exe,然后安装AspNetMVC3ToolsUpdateVS11Setup.exe http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=1491

第二步:新建数据库,创建测试表。然后往表里insert些测试数据

  1. USE [yanComdb] 
  2. GO 
  3.  
  4. SET ANSI_NULLS ON 
  5. GO 
  6. SET QUOTED_IDENTIFIER ON 
  7. GO 
  8. CREATE TABLE [dbo].[NewsEntity]( 
  9.     [NId] [int] IDENTITY(1,1) NOT NULL, 
  10.     [Title] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NOT NULL, 
  11.     [Information] [text] COLLATE Chinese_PRC_CI_AS NULL, 
  12.     [Time] [datetime] NOT NULL CONSTRAINT [DF_NewsEntity_Time]  DEFAULT (getdate()), 
  13.  CONSTRAINT [PK_NewsEntity] PRIMARY KEY CLUSTERED  
  14.     [NId] ASC 
  15. )WITH (PAD_INDEX  OFF, IGNORE_DUP_KEY OFF) ON [PRIMARY] 
  16. ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 

构建列表页面

第一步:打开VS,新建选择MVC3 web应用程序,输入项目名称以及目录

第二步:创建NewsEntity类,本文使用自己手写实体类(没有使用LinqtoSql,EF等orm)

  1. [TableAttribute("NewsEntity")]//这行很重要,因为mvc框架默认去db中找类名复数的表名 
  2.     public class NewsEntity 
  3.     
  4.         [Key]//设置主键 
  5.         public int NId get; set; 
  6.  
  7.         [StringLength(100)]//设置验证信息 
  8.         [Required(ErrorMessage="标题不能为空")] 
  9.         [DisplayName("标题")] 
  10.         public string Title get; set; 
  11.  
  12.         [Required(ErrorMessage "正文必须填写")] 
  13.         [DisplayName("正文")] 
  14.         public string Information get; set; 
  15.  
  16.         public DateTime Time get; set; 
  17.     

第三步:配置数据库连接字符,注意此处的name对应下一步中创建的类名。

  1. <</SPAN>connectionStrings> 
  2. <</SPAN>add name="ProjectEntity" connectionString="Data Source=ip;Initial Catalog=yanComdb;Persist Security Info=True;User ID=;Password=" 
  3. providerName="System.Data.SqlClient" /> 
  4. </</SPAN>connectionStrings> 

第四步:创建ProjectEntity类,需要继承DbContext

  1. public class ProjectEntity DbContext 
  2.     
  3.         public DbSet<</SPAN>NewsEntity> NewsEntity get; set; 
  4.     

第五步:新建Controller,

  1. ProjectEntity PE new ProjectEntity(); 
  2.         public ActionResult News() 
  3.         
  4.             try 
  5.             
  6.                 var list PE.NewsEntity.ToList(); 
  7.                 return View(list); 
  8.             
  9.             catch (Exception e) 
  10.             
  11.                 throw e; 
  12.             
  13.         

第六步:在News上右键,新建视图。勾选“创建强类型视图”,选择NewsEntity,支架模块选择List

添加后,cshtml代码如下:

  1. @model IEnumerable<</SPAN>TaiQiu.Models.NewsEntity> 
  2. @{ 
  3.     ViewBag.Title "后台新闻管理列表"; 
  4.     Layout "~/Views/Shared/_MLayout.cshtml"; 
  5. <</SPAN>h2> 
  6.     新闻列表</</SPAN>h2> 
  7. <</SPAN>p> 
  8.     @Html.ActionLink("添加", "Create") 
  9. </</SPAN>p> 
  10. <</SPAN>table> 
  11.     <</SPAN>tr> 
  12.         <</SPAN>th width="50px"> 
  13.             ID 
  14.         </</SPAN>th> 
  15.         <</SPAN>th width="300px"> 
  16.             标题 
  17.         </</SPAN>th> 
  18.         <</SPAN>th width="150px"> 
  19.             时间 
  20.         </</SPAN>th> 
  21.         <</SPAN>th> 
  22.         </</SPAN>th> 
  23.     </</SPAN>tr> 
  24.     @foreach (var item in Model) 
  25.     
  26.         <</SPAN>tr> 
  27.             <</SPAN>td> 
  28.                 @Html.DisplayFor(modelItem => item.NId) 
  29.             </</SPAN>td> 
  30.             <</SPAN>td> 
  31.                 @Html.DisplayFor(modelItem => item.Title) 
  32.             </</SPAN>td> 
  33.             <</SPAN>td> 
  34.                 @Html.DisplayFor(modelItem => item.Time) 
  35.             </</SPAN>td> 
  36.             <</SPAN>td> 
  37.                 @Html.ActionLink("编辑", "EditNews", new id item.NId  }) 
  38.                 @Html.ActionLink("删除", "DeleteNews", new id=item.NId }) 
  39.             </</SPAN>td> 
  40.         </</SPAN>tr> 
  41.     
  42. </</SPAN>table> 

运行后效果图如下:

到此,第一个列表页面就完成了(未涉及分页,后续会更新)。关于添加,修改,删除也就很容易了。

添加Controller代码:

  1. [HttpPost] 
  2.         [ValidateInput(false)] 
  3.         public ActionResult Create(NewsEntity news) 
  4.         
  5.             if (ModelState.IsValid) 
  6.             
  7.                 news.Time DateTime.Now; 
  8.                 PE.NewsEntity.Add(news); 
  9.                 try 
  10.                 
  11.                     PE.SaveChanges(); 
  12.                     return RedirectToAction("News"); 
  13.                 
  14.                 catch (Exception e) 
  15.                 
  16.                     throw e; 
  17.                 
  18.  
  19.             
  20.             return View(); 
  21.         

添加页面:

  1. @model TaiQiu.Models.NewsEntity 
  2. @{ 
  3.     ViewBag.Title "添加新闻"; 
  4.     Layout "~/Views/Shared/_MLayout.cshtml"; 
  5. <</SPAN>h2> 
  6.     添加新闻</</SPAN>h2> 
  7. <</SPAN>script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></</SPAN>script> 
  8. <</SPAN>script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></</SPAN>script> 
  9. <</SPAN>script src="@Url.Content("~/Scripts/kindeditor/kindeditor.js")" type="text/javascript"></</SPAN>script> 
  10. <</SPAN>script src="@Url.Content("~/Scripts/kindeditor/lang/zh_CN.js")" type="text/javascript"></</SPAN>script> 
  11. <</SPAN>script type="text/javascript"> 
  12.         var editor; 
  13.         KindEditor.ready(function (K) 
  14.             editor K.create('textarea[name="Information"]', 
  15.                 allowFileManager: true 
  16.             }); 
  17.         }); 
  18. </</SPAN>script> 
  19. @using (Html.BeginForm()) 
  20.     @Html.ValidationSummary(true) 
  21.     <</SPAN>fieldset> 
  22.         <</SPAN>legend>News</</SPAN>legend> 
  23.         <</SPAN>div class="editor-label"> 
  24.             @Html.LabelFor(model => model.Title) 
  25.         </</SPAN>div> 
  26.         <</SPAN>div class="editor-field"> 
  27.             @Html.TextBoxFor(model => model.Title, new style "width:500px" }) 
  28.             @Html.ValidationMessageFor(model => model.Title) 
  29.         </</SPAN>div> 
  30.         <</SPAN>div class="editor-label"> 
  31.             @Html.LabelFor(model => model.Information) 
  32.         </</SPAN>div> 
  33.         <</SPAN>div class="editor-field"> 
  34.             @Html.TextAreaFor(model => model.Information, new style="width:800px;height:400px"}) 
  35.             @Html.ValidationMessageFor(model => model.Information) 
  36.         </</SPAN>div> 
  37.         <</SPAN>p> 
  38.             <</SPAN>input type="submit" value="Create" /> 
  39.         </</SPAN>p> 
  40.     </</SPAN>fieldset> 
  41. <</SPAN>div> 
  42.     @Html.ActionLink("返回列表", "Index") 
  43. </</SPAN>div> 

修改页面一样,Controller稍微有点修改:

  1. [HttpPost] 
  2.         [ValidateInput(false)] 
  3.         public ActionResult EditNews(NewsEntity news) 
  4.         
  5.             if (ModelState.IsValid) 
  6.             
  7.                 news.Time DateTime.Now; 
  8.                 PE.Entry(news).State EntityState.Modified;//修改 
  9.                 PE.SaveChanges(); 
  10.                 return RedirectToAction("News"); 
  11.             
  12.             return View(news); 
  13.         

删除Controller代码:

  1. public ActionResult DeleteNews(int id) 
  2.         
  3.             var model PE.NewsEntity.Find(id); 
  4.             PE.NewsEntity.Remove(model); 
  5.             PE.SaveChanges(); 
  6.             return RedirectToAction("News"); 
  7.         

小弟刚接触MVC3,本文也只是本人学习中的一点点积累。有很多不好的地方,希望大家多提意思。

原文:http://www.cnblogs.com/zhxhdean/archive/2012/03/12/2392575.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值