• MVC视图简单介绍(内部使用)


    上一章说到了Controller,并且返回了字符串类型,但是用户界面往往不是简单的字符串可以满足的,所以MVC就有了视图(View)

    视图的职责是向用户提供用户界面的,

    下面我们新建一个View

    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Sample</title>
    
    
        @ViewBag.Mes
    </head>
    <body>
        <div>
        </div>
    </body>
    </html>
    

    这个视图非常简单 只是通过ViewBag来返回一个文字

    下面我们来说一下如果从控制器中指定视图

     public class HomeController : Controller
        {
            //
            // GET: /Home/
    
            public ActionResult Index()
            {
    
                ViewBag.Mes = "Hello";
    
                return View("Sample");
            }
        }
    

    这是一个简单的控制器在里面为Mes幅值之后返回到了Sample的视图中,这里不需要后缀

    我们可以看到MVC的Controller基类中含有多种View的重载

            protected internal ViewResult View(IView view);
          
            protected internal ViewResult View(object model);
          
            protected internal ViewResult View(string viewName);
          
            protected internal virtual ViewResult View(IView view, object model);
          
            protected internal ViewResult View(string viewName, object model);
        
            protected internal ViewResult View(string viewName, string masterName);
    
            protected internal virtual ViewResult View(string viewName, string masterName, object model);
    

    可以根据自己的实际要求去访问,在上面的方法中我们特定指定了一个返回视图Sample

    假如我们没有指定视图Controller会如何匹配视图呢,首先它会去找相同目录Home下的Index名称的视图,如果寻找不到就会报错

    在一些情况下我们会指定不同目录下的视图 我们可以用全路径“~”来标示

    return View("~/Views/Example/Index.cshtml");
    

    这里必要用后缀名  

    ViewData和ViewBag  

    数据从控制器传入视图是通过ViewData的ViewDataDictionary(这是特殊的字典类) 我们可以使用标准的字典语法来设置 或者 取值

    VewData["name"]="Linsong";
    

    ViewBag就是ViewData的动态封装器,我们可以更方便的使用ViewBag

    ViewBag.name=“Linsong”;
    

    其实就理论来说2中表达方式还是无太大差异的,ViewBag更方便一些,更收欢迎一些  

    但是之前的差异我们还是要知道的

    (1)首先 ViewBag后面必须跟同标准的C#字符

    例如 ViewData[“L   song”] 这种在ViewData可以用  ViewBag不可以

    (2)动态值不能当做方法参数,这时候要用ViewData  或者讲ViewBag强制转换 (string)ViewBag

    强制类型视图

    我们新建视图的时候可以选择类型 或者不限则类型 在页面上的定义@model +类型  来实现强类型

    Razor

    razor中有一些特定的表达方式支持html javascript css

    @Model.属性 单行代码块

    @{} 多行代码块

    @*标题房源发布时间等 结束*@ 注释

    razor中都是用html编码过的,如果输入标签等内容 @Html.Raw(内容) 来不被编码

    在代码块中并且没有被标签包住的中文可以用@:  或者<text>内容</text>  否则报错

     

  • 相关阅读:
    用word2010发个blog
    停止调试无法关闭控制台
    D11.5.8,Lingo中不支持AS3的ExternalInterface接口
    Lingo03 通用脚本和自定义handler
    Lingo01 术语
    Lingo09 Sprite
    Lingo动态创建script member
    tut11脚本基础
    诡异失败的导入对话框
    Lingo3D01 3D Cast Member的组成
  • 原文地址:https://www.cnblogs.com/linsong521/p/4762812.html
Copyright © 2020-2023  润新知