ASP.NET - Razor Code Expressions

ASP.NET - Razor Code Expressions 首页 / ASP.Net MVC入门教程 / ASP.NET - Razor Code Expressions

Razor语法在C#编程语言中广泛使用。要将C#代码写入视图,请使用@(At)符号启动Razor语法。无涯教程可以用它来写单行表达式或多行代码挡路。看看如何在视图页面中使用C#代码。

下面的示例演示代码表达式。

//Index.cshtml

@{
    Layout = null;
    var coursename = "Java Collection";
}
<!DOCTYPE html> 
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <h2>I want to learn @coursename </h2>
</body>
</html>

生成以下输出。

ASP Razor code expression 1

隐式Razor表达式

隐式Razor表达式以@(At)字符开头,后跟C#代码。下面的示例演示有关隐式表达式的内容。

//Index.cshtml

@{
    Layout = null;
}
<!DOCTYPE html>  
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <p>Current Time is: @DateTime.Now.ToString("T")</p>
</body>
</html>

它会产生以下输出。

ASP Razor code expression 2

显式Razor表达式

显式Razor表达式由@(At)字符和平衡括号组成。在下面的示例中,表达式用括号括起来,以确保安全执行。如果没有用括号括起来,它将抛出错误。

无涯教程网

可以使用显式表达式将文本与表达式连接起来。

//Index.cshtml

@{
    Layout = null;
}
<!DOCTYPE html>  
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <p>2 + 5 = @(2+5)</p>
</body>
</html>

它会产生以下输出。

ASP Razor code expression 3

Razor表达式编码

Razor提供表达式编码,以避免恶意代码和安全风险。如果用户输入恶意脚本作为输入,Razor引擎会对脚本进行编码并呈现为HTML输出。

//Index.cshtml

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    Html.Raw("<script>alert('System Failure!')</script>")
</body>
</html>

它会产生以下输出。

ASP Razor code expression 4

在下面的示例中,无涯教程对JavaScript脚本进行编码。

//Index.cshtml

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    @("<script>alert('this is alert box')</script>")
</body>
</html>

现在,它生成以下输出。

ASP Razor code expression 5

这一次,Razor引擎对脚本进行编码,并以简单的HTML字符串形式返回。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品手记 -〔邱岳〕

深入剖析Kubernetes -〔张磊〕

白话法律42讲 -〔周甲徳〕

许式伟的架构课 -〔许式伟〕

Python核心技术与实战 -〔景霄〕

TypeScript开发实战 -〔梁宵〕

Netty源码剖析与实战 -〔傅健〕

Spark核心原理与实战 -〔王磊〕

Go进阶 · 分布式爬虫实战 -〔郑建勋〕

好记忆不如烂笔头。留下您的足迹吧 :)