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>

 

posted @ 2018-03-28 16:40  widosad  阅读(356)  评论(0)    收藏  举报