• ASP.NET Core 的 Razor 语法


    呈现 HTML

    默认 Razor 语言为 HTML。 从 Razor 标记呈现 HTML 与从 HTML 文件呈现 HTML 并没有什么不同。服务器会按原样呈现 .cshtml Razor 文件中的 HTML 标记。

    Razor 语法

    Razor 支持 C#,并使用 @ 符号从 HTML 转换为 C#。 Razor 计算 C# 表达式,并将它们呈现在 HTML 输出中。

    当 @ 符号后跟 Razor 保留关键字时,它会转换为 Razor 特定标记。 否则会转换为纯 C#。

    若要对 Razor 标记中的 @ 符号进行转义,请使用另一个 @ 符号:

    CSHTML
    <p>@@Username</p>
    

    该代码在 HTML 中使用单个 @ 符号呈现:

    HTML
    <p>@Username</p>
    

    包含电子邮件地址的 HTML 属性和内容不将 @ 符号视为转换字符。 Razor 分析不会处理以下示例中的电子邮件地址:

    CSHTML
    <a href="mailto:Support@contoso.com">Support@contoso.com</a>

    表达式编码

    计算结果为字符串的 C# 表达式采用 HTML 编码。 计算结果为 IHtmlContent 的 C# 表达式直接通过 IHtmlContent.WriteTo 呈现。 计算结果不为 IHtmlContent 的 C# 表达式通过 ToString 转换为字符串,并在呈现前进行编码。

    CSHTML
    @("<span>Hello World</span>")  

      也可使用HtmlHelper.Raw,但是不安全应该避免使用

    隐式转换

    代码块中的默认语言为 C#,不过,Razor 页面可以转换回 HTML:

    @{
        var inCSharp = true;
        <p>Now in HTML, was in C# @inCSharp</p>
    }

    @inherits

    @inherits 指令对视图继承的类提供完全控制:

    @inherits TypeNameOfClassToInheritFrom
     
     

    @functions

    @functions 指令允许 Razor 页面将函数级别的内容添加到视图:

    CSHTML
    @functions { // C# Code }
    

    例如:

    CSHTML
    @functions {
        public string GetHello()
        {
            return "Hello";
        }
    }
    
    <div>From method: @GetHello()</div> 


    查看为视图生成的 Razor C# 类

    将下面的类添加到 ASP.NET Core MVC 项目:

    using Microsoft.AspNetCore.Mvc.Razor.Extensions;
    using Microsoft.AspNetCore.Razor.Language;
    
    public class CustomTemplateEngine : MvcRazorTemplateEngine
    {
        public CustomTemplateEngine(RazorEngine engine, RazorProject project) 
            : base(engine, project)
        {
        }
            
        public override RazorCSharpDocument GenerateCode(RazorCodeDocument codeDocument)
        {
            var csharpDocument = base.GenerateCode(codeDocument);
            var generatedCode = csharpDocument.GeneratedCode;
    
            // Look at generatedCode
    
            return csharpDocument;
        }
    }

     
  • 相关阅读:
    1001.A+B for Matrices
    1016.火星A+B
    1468.Sharing
    1464.Hello World For U
    约瑟夫问题pascal程序
    约数研究pascal程序
    迷宫pascal程序
    魔法照片pascal程序
    均分纸牌pascal程序
    多项式输出pascal程序
  • 原文地址:https://www.cnblogs.com/student-note/p/8916555.html
Copyright © 2020-2023  润新知