Razor二义性:
1,当view层中出现 邮件格式时候比如 anbylau2130@qq.com 这种情况Razor将会出现多义性
可以使用@@来转义为一个@字符,
如:<p>you must follow @james,@jessica,@Andy</p> 这里Razor会以变量的形式解释james,jessica,andy,
这不是我们想要的效果,所以可以使用@@来转义<p>you must follow @@james,@@jessica,@@Andy</p>
但是Razor内部做了一般邮箱的识别,
如:item_@items.Length可能会识别为邮箱地址,那么这时可以在后面加上item_(@items.Length)来计算后面的值
Html编码
1, Razor表达式是Html编码的
{
@string message ="<script>alert(‘warning‘)</script>"
}
<div>@Message</div> 这里就不会弹出对话框,而是编码后的html文本
如果要显示一个对话框
1,可以使用HtmlString的实例,
2,可以使用@Html.Raw(message)
应尽可能的避免脚本注入
2,如果要在脚本中使用Razor语法,那么最好的解决方案便是 使用@Ajax.JavaScriptStringEncode(ViewBag.UserName)
代码块
@foreach(var item in lst)
{
<li>this is @item</li>
}
@{
语句
}
注释:@**@
布局
@{layout=~/Views/Shared/SiteLayout.cshtml}
@RenderBody()相当于web form中的Placehold控件
@RenderPatitial() 进行部分视图的绘制
//@RenderSection("Footer")