--------------任何时候Razor有了二义性,都可以用圆括号指明想要的内容
@{string str="zhangdi"; MvcApplication1.Models.Album alb=new MvcApplication1.Models.Album (); alb.Title = "a"; } <!--输出:zhangdi.aa--> <li>@(str).aa</li> <!--输出:962410314a--> <li>962410314@(alb.Title)</li> <!--输出962410314 @alb.Title--> <li>962410314 @@alb.Title</li>
--------------Html编码
@{ string script = "<script>alert('xss攻击')</script>"; } <!--不显示html标记--> <li>@script</li> <!--显示html标记--> <li>@Html.Raw(script)</li> <script type="text/javascript"> $(function () { var msg = '@ViewBag.User'; $("#message").html(msg); var msg2 = '@Ajax.JavaScriptStringEncode(ViewBag.User)'; $("#message2").html(msg2); }); </script> <li id="message"></li><!--输出:<script>alert('asdasd')</script>--> <li id="message2"></li><!--输出:弹出框'asdasd'--> <!--显示:\u003cscript\u003ealert(\u0027asdasd\u0027)\u003c/script\u003e--> @Ajax.JavaScriptStringEncode(ViewBag.User)
--------------Razor语法
<!--1,隐式识别代码--> <li>@ViewBag.Message</li> <!--2,显示识别代码--> <li>Show@(ViewBag.Message)</li> <!--3,无编码代码--> <li>@Html.Raw(ViewBag.Message)</li> <!--4,代码块--> @{ int x = 1; string abc = "abc"; } <!--5,文本域标记相结合--> @foreach (var item in new int[]{1,2,3}) { <li>@item</li> } <!--6,混合代码与纯文本--> @if (ViewBag.Message == "<h style='color:red'>zhangdi</h>") { <text>张迪</text> } @*7,转义代码分隔符(转义为@)*@ <li>@@</li> <!--8,服务器的注释--> @* @for (int i = 0; i < 10; i++) { }*@ <!--9,调用泛型方法--> @*泛型方法等也需要显示使用(),因为"<"标记会使Razor转回标记*@