三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> ASP.NET -> Asp.net MVC4高级编程学习笔记 -> 正文阅读
 

[ASP.NET]Asp.net MVC4高级编程学习笔记

Asp.net MVC4高级编程学习笔记 Razor视图引擎 1、常用写法
@标记代码的转换字符。
示例:
<h1>hello,it’s @users.count  items.</h1> //这里会自动识别@users.count为代码块,用空格识别;
@{
         String rootNameSpace=”MyApp”;
}
//////////////////////////////////////////////////////////////////
<span> @(rootNameSpace).Models</span>
//这里需要加括号,如果不加括号会识别.后面的Models为rootNameSpace的属性这样会报错。
/////////////////////////////////////////////////////////////////////////
一般电子邮件格式会自动识出来格式,为了防止歧义建议用@@来转义显示电子邮件中的@符号。如:abc@@126.com
如果有类似电子邮件的格式需要转换代码,如下需要增加括号来识别,比如:
<li>Item_@(item.length)</li> //如果去掉括号会当成电子邮件格式连代码一块输出来。
///////////////////////////////////////////////////////////////////////////
@foreach(item in items)
{
<li> The item is @item.</li> //这里会识别到.后面为<符号,不能组成有效的表达式,因此只会自动识别为@item。这个功能比较好。
}
/////////////////////////////////////////////////////////
如果语句中@符号,如微信中的@某个人,可以使用@@符号转义输出。如:
@@吴京,@@小s
2、        HTML编码
 默认情况下Razor会自动编码,如:
@{
string message=”<script>alert(‘hello!’)</script>”
}
<span>@message</span>
这里在执行时不会弹出警告框,而会输出如下内容:
<span>&lt;script&gt;alert(&#39;alert&#39; &lt;/script&gt;</span>。
/////////////////////////////////////////////////////////////////////////
如果想显示Html标签到页面中,通过两种方式
1)       创建一个HtmlString 、mvcHtmlString实例或者直接调用mvcHtmlString.Create方法创建
Example:
@(new HtmlString("<script>alert('123')</script>")) //会弹出网页对话框123
@(new MvcHtmlString("<script>alert('123')</script>"))//会弹出网页对话框123
@MvcHtmlString.Create("<script>alert('123')</script>")//会弹出网页对话框123
2)       使用Html.Raw方法
 @Html.Raw("<script>alert('123')</script>") //会弹出网页对话框123
思考:这里什么把Html标签打印显示到页面上,而不是弹出对话框,但又不能像默认那样出现转码符号&lt,&gt;,如有人知道还请告知,谢谢!
以上这种Razor自动编码对于javascript脚本中来显示用户输出的信息来说安全性还是不够,如果用户信息参数中存在编码后的脚本标签还是可以攻击,因此在脚本中需要使用javascript编码而不仅仅是Html编码。需要使用@Ajax.JavaScriptStringEncode对用户输出信息进行编码。
Example:--这里注意我在Razor视图写的这一句好像没有执行js代码,页面预览效果还是显示Test,不知道有人知道在View中这样写存在的问题,提供下正确的解决方法,谢谢!
<div id="message">Test</div>
<script type="text/javascript">
    $(function () {
        var message = 'Hello,@Ajax.JavaScriptStringEncode(ViewBag.UserName)'; 
        $("#message").html(message).show('slow');      
    });   
</script>
--找到一种解决方案:
  在_Layout.cshtml通用视图中添加节点 @RenderSection("scripts", required: false),然后在渲染的视图如下书写就可以正常执行js代码了,初步判断应该是页面加载先后顺序问题。
示例代码:
@section scripts
{
<script type="text/javascript">
$(function () {
var message = 'Hello,@Ajax.JavaScriptStringEncode(ViewBag.UserName)';
$("#message").html(message).show('slow');
});
</script>
}
/////////////////////////////////////////////////////////////////////////////////////
Razor支持代码块。
Example:
         @foreach(var item in stuff)
{
               <li>the item name is @item.</li>
}
这个代码块自动识别htrml内容,到右边的}号结束。
写成一行也可以识别,如:
@foreach (var item in stuff){    <li>the item name is @item.</li>}
多行代码块Example:
@{
    string strName = "XiaoHua";
    ViewBag.Title = "用户信息";
}
当调用没有反回值的方法值时,需要使用代码块。
Example:
@{Html.RenderPartial("AboutView");} //如果这里去掉花括号是报错的,提示void转为object。
/////////////////////////////////////////////////////////////////////////////////////
Razor混合代码和纯文本两种方式。
@if(showMessage)
{
    <text>This is plain text.</text>  //可以多行使用
}
@*或者*@
@if(showMessage)
{
    @:This is plain text. //不过这里只能写一行文本,不能换行。
}
/////////////////////////////////////////////////////////////////////////////////////
Razor输出转义符号@。
使用&#64或者两个@@符号转义输出@符号。
/////////////////////////////////////////////////////////////////////////////////////
Razor注释。
使用@* 注释内容 *@格式在视图文件中添加注释。
/////////////////////////////////////////////////////////////////////////////////////
Razor使用泛形方法需要整个代码使用圆括号括起来。
Example:
@(Html.someMethod<AType>())
后续视图布局单独再写一个学习笔记。
  ASP.NET 最新文章
layim+signalr2.0在线轻聊版解决方案
ASP.NET页面之间传值的方式之Session(个人
FileSystemWatcher 监视指定目录中的变更
ASP.NET没有魔法——ASP.NET MVC IoC
ASP.NET页面之间传值的方式之Application(
二级目录下配置mvc访问404
AngularJS Boostrap Pagination Sample
下拉框多选
百度地图下拉框搜索建议,并自动添加标注点
Asp.Net 4.0 FormAuthentication 原理
上一篇文章           查看所有文章
加:2017-10-10 23:21:27  更:2017-10-10 23:21:33 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年10日历
2017-10-22 7:15:02
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库