MVC3----模型绑定

模型绑定(用于获取表单或者URL提交的参数)

1,基本模型绑定(你可以直接在参数中用字符串,整型变量,实体或者是List<实体>的方式获取表单提交的参数)

例1:

public ViewResult Details(int id)
{
    Album album = db.Album.Find(id);
    return View(album);
}

匹配URL:

http://localhost/Home/Details/1

http://localhost/Home/Details?Id=1

匹配表单:

<input type="text" name="id" value="1" />

例2:

[HttpPost]
public ActionResult Create(Album album)
{
    if (ModelState.IsValid)
    {
	db.Album.Add(album);
	db.SaveChanges();
	return RedirectToAction("Index");  
    }

    ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
    ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
    return View(album);
}

匹配表单:

<input type="text" name="id" value="1" />

<input type="text" name="name" value="tom" />

2,显示模型绑定(UpdateModel与TryUpdateModel都用于显示模型绑定)

UpdateModel:如果绑定期间出现错误,则会抛出异常

[HttpPost]
public ActionResult Edit()
{
    Album album = new Album();

    try
    {
	UpdateModel(album);
	db.Entry(album).State = EntityState.Modified;
	db.SaveChanges();
	return RedirectToAction("Index");
    }
    catch{
	ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
	ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
	return View(album);
    }
}

TryUpdateModel:不会抛出异常,它会返回一个bool值,true为绑定成功,false为绑定失败

[HttpPost]
public ActionResult Edit()
{
    Album album = new Album();
    if (TryUpdateModel(album))
    {
	db.Entry(album).State = EntityState.Modified;
	db.SaveChanges();
	return RedirectToAction("Index");
    }
    ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
    ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
    return View(album);
}

3,模型状态

[HttpPost]
public ActionResult Create(Album album)
{
    if (ModelState.IsValid)//模型状态
    {
	db.Album.Add(album);
	db.SaveChanges();
	return RedirectToAction("Index");  
    }

    ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
    ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
    return View(album);
}
时间: 2024-11-08 23:57:39

MVC3----模型绑定的相关文章

ASP.NET MVC Model之二模型绑定

Asp.net mvc中的模型绑定,或许大家经常用,但是具体说他是怎么一回事,可能还是会有些陌生,那么,本文就带你理解模型绑定.为了理解模型绑定,本文会先给出其定义,然后对通过比,来得出使用模型绑定的方便.最后简单的模拟一下自定义模型绑定,让大家对模型绑定有进一步的认识. 一.模型绑定的概念 mvc framework中有一种技术,他就是模型绑定:使用 被浏览器发送的http请求里面数据 来创建.net对象的过程.接下来就让我们来看看模型绑定的好处. 二.模型绑定好处 第二部分,我们通过不使用模

《ASP.NET MVC 4 实战》学习笔记 11:模型绑定器与值提供器

一.创建自定义模型绑定器: 利用请求数据塑造模型对象并将对象传递给动作参数的过程称为模型绑定(Model Binding). 大多数时候动作参数是对象的主键或其他唯一标识符,因此我们可以不必在所有的动作中都放置一段重复的数据访问代码(下面代码“\\Before”部分),而是使用一个自定义的模型绑定器(下面代码“\\After”部分).它能够在动作执行之前加载存储对象,于是动作不再以唯一标识符而是以持久化的对象类型作为参数. // Before public ViewResult Edit (Gu

Kendo UI Grid 模型绑定

开篇 接触 Asp.net MVC 时间较长的童鞋可能都会了解过模型绑定(Model Binding),而且在一些做 Web 项目的公司或是Team面试中也经常会被问到.项目中有很多 Action 中都使用了自定义的模型绑定,但是业务逻辑太过复杂不适合做为例子与大家分享,而今天在做一个 Kendo UI 的功能时觉得可以用 Kendo UI 做为例子与大家分享与探讨一个典型的 Model Binding 的过程. 写的比较随性,欢迎大家讨论及拍砖! 背景介绍 Kendo UI: 它是一个非常出名

Asp.Net MVC在过滤器中使用模型绑定

废话不多话,直接上代码 1.创建MVC项目,新建一个过滤器类以及使用到的实体类: 1 public class DemoFiltersAttribute : AuthorizeAttribute 2 { 3 public override void OnAuthorization(AuthorizationContext filterContext) 4 { 5 var person = new Person(); 6 //过滤器中使用模型绑定 7 BindModel<Person>(filt

ASP.NET MVC 4 (九) 模型绑定

模型绑定指的是MVC从浏览器发送的HTTP请求中为我们创建.NET对象,在HTTP请求和C#间起着桥梁的作用.模型绑定的一个最简单的例子是带参数的控制器action方法,比如我们注册这样的路径映射: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Inde

ASP.NET MVC学习之模型绑定(1)

一.前言 下面我们将开始学习模型绑定,通过下面的知识我们将能够理解ASP.NET MVC模型的模型绑定器是如何将http请求中的数据转换成模型的,其中我们重点讲述的是表单数据. 二.正文 1.简单类型绑定 学过一定ASP.NET MVC都会为这个特点所骄傲,就是能够将表单中与同名的参数映射,这相比操作ASP.NET控件来获取值轻便了许多,但是正如上面所说的那样要同名(大小写不区分),下面我们会讲述如何自己去指定. 首先我们在HomeController(如果不存在则创建)中获取表单中的值并显示:

ASP.NET MVC学习之模型绑定(2)

3.手工调用模型绑定 很多情况下我们都是通过形参的方式接收来自http流中的数据,这看似是完美的,但是缺少了很多过程中的控制,所以我们就需要使用手工的方式进行绑定.下面我们通过一个例子来说明,首先打开Views/Home/Index.cshtml页面,并输入如下代码: 1 @{ 2 ViewBag.Title = "Index"; 3 } 4 5 @if (TempData.ContainsKey("msg")) 6 { 7 <h1> 8 @TempDa

模型绑定(Model Binding)

模型绑定是值用浏览器以HTTP请求方式发送数据来创建.NET对象的过程.(负责生成适当的动作方法参数值) 动作调用器(Action Invoker):调用控制器的动作方法的组件,负责在调用动作方法之前获取动作方法的参数值. 默认的动作调用器(ControllerActionInvoker)依赖于模型绑定器,而模型绑定器(Model Binder)是有IModelBinder接口定义的. public interface IModelBinder { object BindModel(Contro

Action的模型绑定

- 你真的会用Action的模型绑定吗? 在QQ群或者一些程序的交流平台,经常会有人问:我怎么传一个数组在Action中接收.我传的数组为什么Action的model中接收不到.或者我在ajax的data中设置了一些数组,为什么后台还是接收不了.还有一些怎么传送一个复杂的对象或者Action怎么接收一个复杂的对象等等这些问题.或者有些人遇到复杂的对象或者数组直接就传送个json字符串,然后在Action中把json字符串转成model对象,当然这也是一种做法,但也许不是最优的做法. 一.需求 按

ASP.NET Core MVC/WebAPi 模型绑定探索

前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用到了,你再去看理论性的文章时才会豁然开朗,这是我一直以来学习技术的方法.本文我们来讲解.NET Core中的模型绑定. 话题 在ASP.NET Core之前MVC和Web APi被分开,也就说其请求管道是独立的,而在ASP.NET Core中,WebAPi和MVC的请求管道被合并在一起,当我们建立控