• asp.net core2 mvc 基础教程--View 视图


    视图(View)用于展示模型(Model)数据。

    view 常用的方式有引用母版页或者不引用母版页

    @model IEnumerable<myfirstweb.models.Student>  //@model声明controller传入的数据类型,传入的是一个可枚举类型
     
    <html>
    <head>
        <h1>this view page by lys</h1>
    @{ var testName="你好"; } </head> <body>
    <i>@testName</i> <h2> @foreach (var st in Model) //Model代表从controller传入的数据 { <ul>@st.Id</ul> <ul>@st.Firstname</ul> //前面如果带有html的元素,使用Model的元素之前必须先用@引用 <ul>@st.Lastname</ul> } </h2> </body> </html>

    这个是不引用母版页的

    @{ } 这是代码块 可以在里面编写代码

    @foreach() 循环

    if switch 这些都能用只需在前面加上@ 或者写在代码块中

    @model myfirstweb.ViewModels.StudentViewModel
    @{
        ViewBag.Title = "创建页面";
          Layout = "~/Shared/_Layout.cshtml";
    }
    <body>
        <div>
            <form method="post" action="">
                <div>
                    <label asp-for="Firstname"></label>
                    <input asp-for="Firstname" />
                    <span asp-validation-for="Firstname"></span>
                </div>
     
                <div>
                    <label asp-for="Lastname"></label>
                    <input asp-for="Lastname" />
                    <span asp-validation-for="Lastname"></span>
                </div>
     
                <div>
                    <label asp-for="Id"></label>
                    <input asp-for="Id" />
                    <span asp-validation-for="Id"></span>
                </div>
     
                <button type="submit" name="save">新增</button>
     
            </form>
        </div>
     
    </body>
    @section fotter{
        <div>------底部下划线------</div>
    }
     

    Layout 就是引用母版页 ,也可以不在这里引用 在_ViewStart.cshtml  里引用

    @{
        Layout = "_Layout";
    }

    _ViewStart.cshtml 只作用于当前目录

    母版页

    <!DOCTYPE html>
     
    <html>
        <head>
            <meta name="viewport" content="width=device-width" />
            <title>@ViewBag.Title</title>
            
        </head>
     
        <body>
            <div>
                @RenderBody()
            </div>
     
            <div>
                @RenderSection("fotter",false)
            </div>
        </body>
    </html>
    这是一个公共的布局:@RenderBody指渲染特定的目标视图;@RenderSection("fotter",false)是我手工加上去的,表示执行片段,片段名为fotter,而且false并不是每一个视图都需要执行这个片段
     _ViewImports.cshtml 页面是全局引用
    @namespace myfirstweb.Views
    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    @using myfirstweb.ViewModels

    namespace myfirstweb.Views:表示命名空间是myfirstweb.Views
    addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers:表示使用了TagHelper
    using myfirstweb.ViewModels:表示使用了命名空间myfirstweb.ViewModels,这样就可以直接使用命名空间下的文件,而不需要带完整路径
    在add.cshtml下使用@uisng myfirstweb.ViewModels.StudentViewModel就需要写完整名字,而可以直接using StudentViewModel

    using  myfirstweb.ViewModels
    @model StudentViewModel @{ ViewBag.Title
    = "创建页面"; } <body> <div> <form method="post" action=""> <div> <label asp-for="Firstname"></label> <input asp-for="Firstname" /> <span asp-validation-for="Firstname"></span> </div> <div> <label asp-for="Lastname"></label> <input asp-for="Lastname" /> <span asp-validation-for="Lastname"></span> </div> <div> <label asp-for="Id"></label> <input asp-for="Id" /> <span asp-validation-for="Id"></span> </div> <button type="submit" name="save">新增</button> </form> </div> </body> @section fotter{ <div>------底部下划线------</div> }

    局部视图用@Html.Partial(“局部视图页一般用下划线开始例如:_footer”,传入需要渲染的数据)

    Partial View

     

    • 复用 View 代码
    • 可以嵌套
    • 没有自己的 Model
    • 两种用法
      • partial Tag Helper(推荐)
      • @Html.Partial("_PartialViewName", data)

    View Components

     

    • 可复用
    • 独立的组件
    • 有独立的逻辑/数据
    • 相当于迷你 MVC 请求
    • 不依赖于父级 View 的数据
    • 和 Partial View 类似,View Component 也有两种用法,依然推荐 Tag Helper 用法。

      • @await Component.InvokeAsync("Welcome")
      • <vc:welcome-students></vc:welcome-students> (推荐)

    更多的用法可以参考https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/overview?view=aspnetcore-3.1

  • 相关阅读:
    根据数组对象中的某个属性值排序
    vue小知识
    vue项目中config文件中的 index.js 配置
    小问题
    原生无缝轮播
    webpack打包提交代码
    echarts
    面试问题
    MySql
    vue-router 跳转原理
  • 原文地址:https://www.cnblogs.com/cqqinjie/p/13176341.html
Copyright © 2020-2023  润新知