- 隐式Razor表达
- 明确的Razor表达式
- Razor表达编码
下面的示例演示代码表达。
// 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>
产生以下输出。
输出:
文章图片
隐式Razor表达隐式Razor表达式以@(at)字符开头,后跟C
【asp.net razor代码表达式】// 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>
它产生以下输出。
输出:
文章图片
明确的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>
它产生以下输出。
输出:
文章图片
Razor表达编码Razor提供表达式编码,以避免恶意代码和安全风险。如果用户输入了恶意脚本作为输入,则Razor引擎会对该脚本进行编码并呈现为HTML输出。
在这里,我们不在视图页面中使用Razor语法。
// 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>
它产生以下输出。
输出:
文章图片
在下面的示例中,我们正在编码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>
现在,它产生以下输出。
输出:
文章图片
这次Razor引擎对脚本进行编码,并以简单的HTML字符串形式返回。
推荐阅读
- asp.net razor标记语法
- asp.net mvc ViewData、ViewBag和TempData
- asp.net mvc脚手架
- asp.net mvc验证
- asp.net mvc路由
- asp.net mvc boostrap框架
- asp.net mvc身份验证
- asp.net mvc entity框架
- asp.net mvc视图