博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC 视图与模型绑定
阅读量:2235 次
发布时间:2019-05-09

本文共 2174 字,大约阅读时间需要 7 分钟。

       在ASP.NET MVC 中视图与模型是可以直接绑定的,这样就绕过了Controller。这种应用场景主要是做信息的提交,比如用户的注册,订单的提交等等。在蒋金楠的《ASP.NET MVC 5框架揭秘》中,他提出MVC视图与模型直接绑定容易带来“混乱”,建议在开发过程中对视图,模型及控制器的交互做好约定,或者使用MVP模式。MVP模式杜绝了视图与模型的直接交互,从根本上解决这个问题。今天我写了一个小例子,来看看视图与模型是如何直接绑定的及绑定的意义。

       

项目结构如上图所示,Models层单独抽出来,目前只有两个类,Product和User类,目前没有模型校验,因为不是这个章节的重点。

public ActionResult Index(){    return View();}[HttpPost]public string Index(User user){     return "Thank you :" + user.Name;}

控制器中的两个方法,一个是初次访问VIEW的时候用的,另一个是POST方法使用的。VIEW页面代码如下:

@model MyMvcApp.Models.User@{    Layout = null;}@using(Html.BeginForm("Index","Home",FormMethod.Post)){    

Your name :@Html.TextBoxFor(x=>x.Name)

Your email:@Html.TextBoxFor(x => x.Email)

Your phone:@Html.TextBoxFor(x => x.Phone)

Your gender:@Html.DropDownListFor(x=>x.Gender,new[]{ new SelectListItem(){ Text = "I am a boy.", Value = "male", Selected = true }, new SelectListItem(){ Text = "I am a girl.", Value = "female", Selected = false }},"please select your gender")

}

可以发现这里引用model的方式比MVC2简单明了,@标签使用起来也更加清爽。MVC3在这方面确实比MVC2有很大的提高。效果如下:

这是信息提交界面,这里的输入框已经和模型进行了绑定,模型绑定最大的好处是可以使用模型校验,比如字段长度等等。在表单提交的时候,直接提交一个对象到后台进行处理,而不必再提交界面上的各个字段,简化了处理流程。

后台的这个方法接受到了一个对象,这样就不必再一个一个去获取。当然也可以那样来做。

Model与View的绑定还有另外一种形式的绑定,比如视图要展示一个列表的时候,这时候就需要绑定一个模型的集合,通常我们以IEnumerable<T>的形式来绑定。

我们的Product类如下:

namespace MyMvcApp.Models{    public class Product    {        public int ProductID { get; set; }        public string ProductName { get; set; }    }}

控制器里面可以这样写:

public ActionResult ProductDisplay(){    List
listProduct = new List
(); listProduct.Add(new Product() { ProductID = 1, ProductName = "产品001" }); listProduct.Add(new Product() { ProductID = 2, ProductName = "产品002" }); listProduct.Add(new Product() { ProductID = 3, ProductName = "产品003" }); ViewData.Model = listProduct; return View();}

控制器里面拿到数据的过程通常被抽提成一个业务逻辑层,这里为了演示不去写那么复杂。在VIEW层我们循环获取model的属性就可以了、

@model IEnumerable
@{ Layout = null;}
@foreach (var item in @Model){
}
Product List
@item.ProductID @item.ProductName

注意这里的模型是一个可迭代的集合,因为我们展示的是一个列表。展示到界面上就是下面这个样子的。

   关于模型与视图绑定这一个章节就介绍到这里。


你可能感兴趣的文章
学习网站汇总
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>