现在的位置: 主页 > 公司荣誉 > 文章列表

ASP.NET MVC 4.0 学习6-Model Binding

作者:兴义市全盈商贸有限公司 来源:www.cnlianguo.com 发布时间:2017-09-12 16:33:41
 

ASP.NET MVC 4.0 学习6-Model Binding 一,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之間做資料的傳遞

复制代码

public ActionResult Index()

{

//ViewData

ViewData["ViewDataValue"] = "This is ViewData Value";

//TempData

TempData["TempDataValue"] = "This is TempData Value";

//ViewBag

ViewBag.Message = "修改此範本即可開始著手進行您的 ASP.NET MVC 應用程式。";

return View();

}

复制代码

复制代码

<hgroup class="title">

<h1>@ViewBag.Title.</h1>

<h2>@ViewBag.Message</h2>

<h3>@ViewData["ViewDataValue"]</h3>

<h3>@TempData["TempDataValue"]</h3>

</hgroup>

复制代码

二, 模型連接(Model Binding)

ASP.NET MVC中會使用模型連接(Model Binding)使Controller獲取View中的資料。

2.1簡單的模型連接

如下示例,View頁面有個id為Content的文本框,對應的Action中有同名的參數Content,這樣當Action被執行的時候程序會通過DefaultModelBinder類別把View頁面傳遞過來的資料傳入Action中的同名參數。

View:

@using(Html.BeginForm()){

<div>@Html.Label("請輸入Content內容: ")<input type="text"/ name="content"></div>

<div>@Html.Label("您輸入的內容為:")@ViewData["content"]</div>

<input type="submit" value="提交"/>

}

Action:

public ActionResult TestAction(string content)

{

ViewData["Content"] = content;

return View();

}

我們下斷點看一下,點擊提交以後,會通過簡單的數據連接模型把content文本框中的值傳遞到TestAction的參數中,然後通過ViewData["Content"]把值取出。

2.2 FormCollection

ASP.NET MVC除了簡單的模型連接取得View頁面資料外,還可以通過FormCollection來取得整個客戶端頁面的資料。

在Action中加入FormCollection參數以後即可取得表單資料。

View:

@{

ViewBag.Title = "TestAction";

}

<h2>TestAction</h2>

@using(Html.BeginForm()){

<div>@Html.Label("請輸入Content內容: ")<input type="text"/ name="content"></div>

<div>@Html.Label("您輸入的內容為:")@ViewData["content"]</div>

<input type="submit" value="提交"/>

}

复制代码

Action:

//FormCollection

public ActionResult TestAction(FormCollection form)

{

ViewData["Content"] = form["content"];

return View();

}

2.3複雜模型連接

1,我們添加TestFormModel類,類中定義三個屬性

复制代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.ComponentModel.DataAnnotations;

namespace MvcApplication3.Models

{

public class TestFormModel

{

public string Content { get; set; }

public string UserID { get; set; }

public int Age { get; set; }

}

}

复制代码

2,Action參數更改為TestFormModel類別,站群软件,來接收View頁面傳遞過來的Form表單,

只要Form表單裏面的欄位名稱和Model類別中的屬性一一對應,即可完成接收動作

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>

}

复制代码

Action,記得添加引用Model

复制代码

//複雜模型连接

public ActionResult TestForm(TestFormModel form)

{

ViewData["Content"] = form.Content;

ViewData["UserID"] = form.UserID;

return View();

}

复制代码

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网络公司 https://www.feimao666.com

  • 上一篇:hdu 4586 Play the Dice(数论)
  • 下一篇:最后一页
  •