第4章 MVC进阶——ASP.NET MVC企业级实战
2018-03-31 本文已影响68人
张中华
4.1 View详解
4.1.1 View和Action之间数据传递的方式
- 弱类型ViewData[""]
- 动态型ViewBag //dynamic
- 动态类型Model
- 临时存储TempData[""]
- 后台:return View(Data); //存入ViewData.Model
- 前台:Model //其实就是WebViewPage.Medel
示例:
首先添加一个model类:
public class User
{
public string Name { get; set; }
}
在controller为变量赋值:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["One"] = "This is ViewData Test";
ViewBag.Two = "This is ViewBag Test";
var _user = new User { Name = "This is Model Test"};
TempData["Four"] = "This is TempData Test";
return View(_user); //等于ViewData.Model = _user;
}
}
其次在View里面应用在controller的变量:
@Model FirstTest.Models.User
<br/>
@{
ViewBag.Title = "Index";
}
@ViewData["One"]<br/>
@ViewBag.Two<br/>
@Model.Name<br/>
@TempData["Four"]
<h2>Index</h2>
4.1.2 TempData、ViewData和ViewBag的区别
- ViewData是字典型的(Dictionary);
- ViewBag不再是字典的键值对结构,而是dynamic型,会在程序运行的时候动态解析;
- ViewData为object型,而ViewBag为dynamic型。dynamic型与object型的区别在使用时它会自动根据数据类型转换。
4.2 Razor视图引擎
示例:
@*1. 使用字符串描述输出*@
@{
string strHtml = "Hi Girl~";
@strHtml;
<br />
}
@*2.使用HTMLHelper输出*@
@{
@Html.Raw("use HTMLHelper to output");
<br />
}
@*3.使用HtmlString类输出*@
@{
HtmlString htm = new HtmlString("use HtmlString");
@htm;
<br />
}
@*4.使用MvcHtmlString输出*@
@{
var str = MvcHtmlString.Create("use mvchtmlstring");
@str;
<br/>
}