ASP.NET MVC 视图 (一) 视图本身
1.加载视图的三种方式
A.可以默认加载
B.指定名称
C.指定路径
public ActionResult Index() { ViewBag.Message = "信息社会在前进"; /*加载一个其他的非默认视图 return View("Contact"); 将会加载view/Contact.cshtml */ /*加载默认的视图 return View() : 将会加载默认的于方法同名的视图index.cshtml */ /*按照路劲加载 return View("~/Views/Home/About.cshtml") 将会加载路劲指定的视图 About.cshtml */ return View("~/Views/Home/About.cshtml"); }
2.视图加载数据
1.采用ViewBag 加载数据
缺点:适用于传递少量视图 不适合大量数据传递
2.使用强类型视图
简介语法 强类型/编译时检查
使用ViewBag从控制器向视图传递信息,然后介绍了传递强类型模型。现实中,这些都是通过ViewDataDictionary【一个特殊的字典类,因为他有一个额外的属性,允许想视图提供一个具体的模型对象,因为中只能有一个模型对象,所以使用ViewDataDictionary想视图传递具体的类。】传递的。
本质: @ViewData["Message"]; 和 >@ViewBag.Message 都可以得到Message信息
注意:ViewBag和ViewData的差异:
- 只有当要访问的关键字是一个有效的C#标识符时,ViewBag才起作用。例如,如果在ViewData["Key With Spaces"]中存放一个值,那么就不用使用ViewBag访问,因为无法通过编译。
- 动态值不能作为一个参数传递给扩展方法,因为C#编译器为了选择正确的扩展方法,在编译时必须知道每一个参数的真正类型。
- 例如 @Html.TextBox("name",ViewBag.Name).要使得这行代码通过编译有两个方法:第一是使用ViewData[“Name”],第二个吧ViewBag.Name转换为一个据图 的类型(string)ViewBag.Name. ------------------《ASP.NET MVC5高级编程 第五版》译者:张远帅 作者:Jon Galloway. Brad Wilson....
public ActionResult Index() { ViewBag.Message = "信息社会在前进"; List<CsharpGeneration> Alist = new List<CsharpGeneration>() { new CsharpGeneration(1,"2002年c#第一个版本发行了"), new CsharpGeneration(2,"c#第二个版本发行加入web 和数据库编程 事件组件驱动成为C#的标志"), new CsharpGeneration((float)3.5,"Linq成为C#的标准支持"), new CsharpGeneration(4,"C#在事件编程上走向成熟 推出了MVC模式 C#的新时代来领了"), new CsharpGeneration((float)4.5,"异步多线变得更加方便!MVC成为流行编程方式 C#支持游戏 移动app开发 wpf"), new CsharpGeneration(6,"C#迎来跨平台时代") }; int i = 0; ViewBag.sortValue = i; return View(Alist); }
@using _20180326_.Models @model IEnumerable<_20180326_.Models.CsharpGeneration> @{ ViewBag.Title = "Index Page"; } <div class="row"> <div class="col-md-12"> <table class="table table-striped "> <thead> <tr> <td>编号</td> <td>版本号</td> <td>描述</td> </tr> </thead> <tbody> @foreach (CsharpGeneration value in Model) { <tr> <td>@ViewBag.sortValue</td> <td>@value.Generation</td> <td>@value.Desc</td> </tr> } </tbody> </table> </div> </div>
解释:项目名称 20180326_
对于经常使用的命名空间,一个较好的方法就是在View目录下的web.config文件中声明。
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization"/> <add namespace="System.Web.Routing" /> <add namespace="_20180326_" /> <add namespace="_20180326_.Models" /> </namespaces> </pages> </system.web.webPages.razor>