您的位置:首页 > 编程语言 > ASP

ASP.NET MVC 4.0 学习6-Model Binding

2014-10-02 18:24 267 查看
一,ViewData,ViewBagTempData

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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: