ASP.NET MVC 4.0 学习6-Model Binding
2014-10-02 18:24
267 查看
一,ViewData,ViewBag與TempData
ASP.NET MVC架構中,通過繼承在Controller中的ViewData,ViewBag和TempData和View頁面進行資料的存取,並且適合於少量的資料傳遞。
1.1 ViewBag
ViewBag可以產生動態屬性,我們新建項目中看到ViewBag的使用方法:
Controller中賦值:ViewBag.Title=”首頁” View中獲取值 @ViewBag.Title
1.2 ViewData
Controller中賦值:ViewData[“message”]=”This is ViewData Value”;
View頁面中取值:@ViewData[“message”]
1.3 TempData
和ViewBag,ViewData不同的是,TempData預設把資料存放於Session,
其生命週期存在於以整個Request的範圍,可以在Controller和Controller之間做資料的傳遞
View Code
3,View頁面輸入的值通過Form表單以Model類的格式傳遞到Controller之後,通過ViewData讀出來
我們下斷點調試可以看到,數據的傳遞:
2.4 判斷模型驗證結果
上一個例子我們看到View中的Form表單數據默認和Model類中的屬性一一對應,這樣我們就可以把數據驗證的部分放到Model中進行處理。
Controller中在處理模型連接的時候,程序會自動處理模型驗證的工作,驗證的結果儲存與ModelState物件中。
現在我們更新Model中的屬性,前面加[Required]表示這個屬性必須有值的時候ModelState. IsValid==true
Model:
View:
Action:當兩個文本框都輸入值的時候,驗證成功 否則失敗
ASP.NET MVC架構中,通過繼承在Controller中的ViewData,ViewBag和TempData和View頁面進行資料的存取,並且適合於少量的資料傳遞。
1.1 ViewBag
ViewBag可以產生動態屬性,我們新建項目中看到ViewBag的使用方法:
Controller中賦值:ViewBag.Title=”首頁” View中獲取值 @ViewBag.Title
1.2 ViewData
Controller中賦值:ViewData[“message”]=”This is ViewData Value”;
View頁面中取值:@ViewData[“message”]
1.3 TempData
和ViewBag,ViewData不同的是,TempData預設把資料存放於Session,
其生命週期存在於以整個Request的範圍,可以在Controller和Controller之間做資料的傳遞
//複雜模型连接 public ActionResult TestForm(TestFormModel form) { ViewData["Content"] = form.Content; ViewData["UserID"] = form.UserID; return View(); }
View Code
3,View頁面輸入的值通過Form表單以Model類的格式傳遞到Controller之後,通過ViewData讀出來
我們下斷點調試可以看到,數據的傳遞:
2.4 判斷模型驗證結果
上一個例子我們看到View中的Form表單數據默認和Model類中的屬性一一對應,這樣我們就可以把數據驗證的部分放到Model中進行處理。
Controller中在處理模型連接的時候,程序會自動處理模型驗證的工作,驗證的結果儲存與ModelState物件中。
現在我們更新Model中的屬性,前面加[Required]表示這個屬性必須有值的時候ModelState. IsValid==true
Model:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; namespace MvcApplication3.Models { public class TestFormModel { [Required] public string Content { get; set; } [Required] public string UserID { get; set; } [Required] public int Age { get; set; } } }
View:
@{ ViewBag.Title = "TestForm"; } <h2>TestForm</h2> @using (Html.BeginForm()) { <div> @Html.Label("请输入Content内容:") <input name="content" type="text" /> </div> <div>@Html.Label("请输入UserID:")<input name="UserID" type="text" /></div> <input type="submit" value="提交" /> <div> 您提交的内容为:content= @ViewData["Content"] <br /> userID= @ViewData["UserID"] </div> <div>Model中的數據驗證狀態:@ViewData["Message"]</div> }
Action:當兩個文本框都輸入值的時候,驗證成功 否則失敗
////模型验证 public ActionResult TestForm(TestFormModel form) { if (ModelState.IsValid) { //Model中的数据符合规范 ViewData["Message"] = "驗證通過"; ViewData["Content"] = form.Content; ViewData["UserID"] = form.UserID; } else { ViewData["Message"] = "驗證失敗"; } return View(); }
相关文章推荐
- ASP.NET MVC 4.0 学习3-Model
- ASP.NET MVC 4.0 学习5-ActionResult
- ASP.NET MVC 4.0 学习1-C#基础语法
- ASP.NET MVC 4.0 学习2-留言板實現
- 【ASP.NET MVC 学习笔记】- 16 Model Binding(模型绑定)
- ASP.NET MVC 4.0 学习4-Code First
- Asp.Net MVC 学习心得 之 Model
- ASP.NET MVC URL Routing 学习
- ASP.NET MVC Release Candidate 1学习指南
- ASP.NET MVC框架学习
- 推荐一本学习ASP.NET MVC的书
- 学习Scott Hanselman的NerdDinner ASP.NET MVC 教程(二)
- 从零开始学习ASP.NET MVC 1.0 (一) 开天辟地入门篇
- 从零开始学习 ASP.NET MVC 1.0 (三) Controller/Action 深入解析与应用实例
- ASP.NET MVC 学习: 视图(http://whx.tzgt.gov.cn/newOperate/html/1/12/123/12058.html)
- Asp.Net MVC 学习心得 之 Controllers
- 学习Scott Hanselman的NerdDinner ASP.NET MVC 教程(一)
- ASP.NET WebForms 4.0支持单向路由功能(MVC)
- 我的asp.net mvc学习过程
- Asp.net MVC框架学习【收藏】