Razor与HTML混合输出陷阱与技巧
生活随笔
收集整理的這篇文章主要介紹了
Razor与HTML混合输出陷阱与技巧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
3,Razor與HTML混合輸出陷阱與技巧
屬性名稱誤判 有時候我們必須讓html內容與razor語句緊接在一起, eg: ?????您好,a先生 假設變量名稱為ViewBag.Name, 您好,@ViewBag.Name 先生 ?//這樣輸出就只有”您好,”,后面的Name 先生被當做是viewbag的屬性去了,所以如果要解決這個問題就是加個小括號便好,如 “您好,(@ViewBag.Name )先生” 還有一個辦法就是用一個html標簽包起來,如“您好,<標簽>@ViewBag.Name</標簽>先生”,或者將先生用html標簽包起來,都是可以的。 未預期的額外屬性 如果想要輸出一個c#的命名空間,而輸出的部分北榮要變成razor變量,類別是System.Web.Mvc.Controller eg: @{ ViewBag.MvcNameSpace="System.Web.Mvc"; } 類別是@ViewBag.MvcNameSpace.Controller 結果輸出會引發錯誤,string未包含controller的定義,原因在于razor解析@ViewBag.MvcNameSpace時把Controller這段當做是@ViewBag.MvcNameSpace的一個Controller屬性,因此解析錯誤,遇到這種情況解決辦法也是加個小括號,eg: @(ViewBag.MvcNameSpace).Controller,就會輸出“System.Web.Mvc” 輸出Email地址與@跳脫子元 <超鏈接a ?href="aaabbb@qq.com">aaa</超鏈接a>,也許有人會說@在razor里是個關鍵字,這里應該放兩個@符號,其實不用,razor會自動判斷前后文,只要@的前面和后面都有文字的話,預設這次@就會停用razor語法解析 <超鏈接a ?href="aaabbb@qq.com">aaa</超鏈接a>如果要將aaa的位置替換為變量 @{ ViewBag.BlogID="aaa"; } <超鏈接a ?href="@(ViewBag.BlogID)bbb@qq.com">aaa</超鏈接a>,也只要加個小括號就可以, 輸出未經htmlEncode的字串 預設使用razor語法輸出變量,所有內容預設都會被HTML編碼為HtmlEncode,這是為了保護網頁不致遭受跨網站腳本攻擊,有了這個預設值,能確保新手寫出不安全代碼 eg: @{ ViewBag.Description="<標簽 style='font-size:12px;'>描述文字</標簽>"; } @ViewBag.Description 最后輸出的結果中會是htmlencode過的版本:大于號小于號雙引號都變成了&加一些字母的形式,解決辦法就是利用@Html.Raw輔助方法幫助我們輸出內容?@Html.Raw(ViewBag.Description)這樣就會原封不動的輸出我們想要的樣子。轉載于:https://www.cnblogs.com/jinhaoObject/p/4597670.html
總結
以上是生活随笔為你收集整理的Razor与HTML混合输出陷阱与技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改表和约束(alter语句)
- 下一篇: 2018年五大最佳前端框架比较,程序员会