Asp.net MVC 学习笔记

本文详细介绍MVC5项目的创建及开发流程,包括Controller控制器的使用、View页面视图的设置、Model类视图的验证规则等内容,并涵盖数据库迁移、字段修改及新表添加等高级操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


FrameWork4.5及以上才能创建MVC5的项目。

MVC的开发模式相比较之前,改动太大,需要慢慢适应,抛弃了服务器端控件,抛弃了后台代码(.cs文件),一切交由控制器操作,处理保存数据时需要弄到按钮,其他都可以通过HtmlHelper生成链接。

一、Controller 控制器

1) 创建时,后边的Controller不能删除,创建后,IDE会自动在Views下边创建一个同名的文件夹。

2) 没有html的Controllder可以通过网址访问,可以作为后台的处理方法使用。

3) public string Welcome(string name, int numTimes = 1)

第二个参数:如果没有赋值,默认值为1 

4) url: "{controller}/{action}/{id}", 

  普通的模式下,访问控制器,触发事件,路由中还默认增加了id的参数,且不区分大小写的。

也可以自己增加或修改路由,但是顺序要对应上。

5) 编辑数据

[HttpPost]//仅支持post方式访问

[ValidateAntiForgeryToken]//阻止伪造请求,与View中的@Html.AntiForgeryToken()匹配。

public ActionResult Edit([Bind(Include="ID,Title,ReleaseDate,Genre,Price")]Movie movie)

写法好特别,最终绑定的是实体类

 

6) 删除数据

方法一、

 [HttpPost, ActionName("Delete")]

 public ActionResult DeleteConfirmed(int id){ ... }

用ActionName重新定义事件名称

方法二、

 public ActionResult Delete(FormCollection fcNotUsed,int id = 0)

定义一个从不使用的form,一者保证是从form提交来的,二者保证同名函数的重载。

 

7) 验证通过

if (ModelState.IsValid)

8) 通过名称重定向操作

return RedirectToAction("Index");

9) 查询语句

var movies = from m in db.Movies

                 select m;

movies = movies.Where(s => s.Title.Contains(searchString));

上面s => s.Title 代码是一个Lambda 表达式。Lambda 是基于方法的LINQ查询。

二、View 页面视图

1) 设置链接 

@Html.ActionLink("Edit","Edit",new { id=item.ID })

//显示的链接文字,方法名称,匿名对象,发送给路由的参数,用来生成路由数据

2) 设置Label

 @Html.LabelFor(model => model.Title,new { @class ="control-label col-md-2" })

//设置label的for属性,设置class

3) 设置Text

 @Html.EditorFor(model => model.Title),生成如下的DOM:

 <input class="text-box single-line" id="Title" name="Title" type="text"  />

      如果设置了必填以及各式,则生成如下的DOM:

 <input class="text-box single-line" data-val="true" data-val-date="字段 上线日期 必须是日期。" data-val-required="上线日期 字段是必需的。" id="ReleaseDate" name="ReleaseDate" type="date" value="2016-05-05" />

4) 显示信息

  @Html.DisplayNameFor(model => model.Title)//模型的显示名称

  @Html.DisplayFor(model => model.Title)//每个对象的属性

 

三、Model 类视图

1) 字段验证

[Display(Name = "上线日期")]//显示的名称

[DataType(DataType.Date)]//数据类型

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

//数据的格式,ApplyFormatInEditMode:编辑时是否使用格式化的样式

如果客户端禁用JS,服务器端会再次进行验证的。

2) 验证规则

[StringLength(60, MinimumLength = 3)]......最大长度,最小长度

[StringLength(4)]......最大字符长度

[RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]......正则验证

[Required]......非空验证

[Range(1, 100)]......数值型范围

[DataType(DataType.Currency)]......数值型

[Display(Name = "Release Date"), DataType(DataType.Date)]......也可以写在一行

decimal, int, float, DateTime不需要设置非空验证

四、程序包管理器控制台

Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDBContext

会创建Migrations文件夹以及Configuration.cs文件

 

修改Seed方法

修改或插入数据。

 

add-migration Initial

创建DbMigration类,用于初始化数据迁移。

 

update-database

创建数据库并运行Seed方法。期间不可运行程序

 

 

五、添加新字段

1) 控制器中需要增加新字段

2) 页面中添加新字段对应的控件或列

3) 使用Code First Migrations[]来更新数据库的schema

4) 根据需要查看第四条

5) Configuration.cs中修改Seed方法,给新列赋值

6) add-migration Rating,在数据库模型中增加新字段,[Rating]为新增的字段名

7) update-database 更新数据库

 

六、修改字段类型或长度

1) 在model上加验证

2) 运行add-migration DataAnnotations

3) 运行update-database

 

七、添加新表

1) Model中创建新表的类,以下几句是重点:

public class SQLDBContext :DbContext

    {

        public DbSet<sys_User> SysUsers {get; set; }

        public DbSet<mBranch> Branchs {get; set; }

 

    }

2) Enable-Migrations -ContextTypeName MVCWeb.Areas.system.Models.SQLDBContext

创建Configuration.cs文件

3) add-migration Initial,对于已经存在的建表语句,需要删除

4) update-database  至此,新增表成功了

 











 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值