zoukankan      html  css  js  c++  java
  • 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;
        }
    }

     
  • 相关阅读:
    【CV论文阅读】ExtremeC3Net: 使用高级C3模块的极轻量人像分割模型
    【pytorch基础】pytorch的初始化
    【CV基础】如何理解空洞卷积(dilated convolution)?
    关于研发规范化的一些实践和思考
    vuecli入门项目实战
    C/C++用.ico图片替换.exe图标(VS2017)(转)
    C# 多线程修改控件时,提示在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke(转)
    C#读取ACCESS提示“未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
    ubuntu的常用命令
    C# DataTable 按整形字段排序
  • 原文地址:https://www.cnblogs.com/student-note/p/8916555.html
Copyright © 2011-2022 走看看