天天看點

探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正)

彙總:http://www.cnblogs.com/dunitian/p/4822808.html#mvc

本章Demo:https://github.com/dunitian/LoTCodeBase/blob/master/NetCode/6.網頁基礎/BMVC5/MVC5Base/Controllers/IndexController.cs

本章Demo:https://github.com/dunitian/LoTCodeBase/blob/master/NetCode/6.網頁基礎/BMVC5/MVC5Base/Controllers/LayController.cs

xss防禦:http://www.cnblogs.com/dunitian/p/5722370.html#xss

4.共用其他視圖

不同控制器渲染同一個視圖檔案。這個應用場景還是比較多的,比如同樣是Article的集合,一個是顯示最新文章清單,一個是顯示文章清單,一個是顯示編輯推薦文章清單,基本上都是<ul><li></li></ul>這種結構,那麼是不是可以把這種的View弄一個共用視圖出來呢? 案例:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
技能點講解:先看效果:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
同一個視圖
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
 return View("~/Views/Index/Index.cshtml");
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理

5.強類型視圖(常用命名空間可以定義在Views下的Web.Config)

通過ViewBag傳遞少量資料的确用的爽,我也挺喜歡這樣的。但是處理資料的時候就特别麻煩了(ViewBag是弱類型的,不能點出我們需要的屬性),這時候強類型就油然而生了~~~ 擴充:動态值不能作為參數傳遞給擴充方法(C#編譯器在編譯的時候為了選擇正确的擴充方法肯定是需要其真正類型的)【你傳參數用var類型的傳着試試~~】 效果:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
代碼部分: Model:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
控制器:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
視圖:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
常用命名空間可以設定在Views的web.config中,eg:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理

 6.Razor的簡單接觸(内含XSS防禦)

初次接觸XSS: http://www.cnblogs.com/dunitian/p/5286772.html 說下Html和Javascript的Xss防禦 Razor表達式是用HTML自動編碼的,我們來看這個例子:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
是不是突然感覺到微軟其實為我們做了很多準備,操了很多心?有木有,這些安全意識很多人都是沒有的
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
如果你把使用者的輸入用Html.Raw的方式顯示,那就坑爹了(盡量避免這種方式,至少使用者輸入的不能用這種)
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
-------------------------------------------------------------------------------------------------- 下面示範一下項目中Ajax的方式
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
使用者輸入變個方式不就繞過驗證了嗎
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
解決方法:@Ajax.JavaScriptStringEncode(ViewBag.Test2)
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
應用建議:Html.Encode(),@Ajax.JavaScriptStringEncode() -------------------------------------------------------------------------------------------------------- 如果你覺得萬事大捷,呃。。。。 下面說下URL的XSS防禦:(這個主要是一些自定義的模闆引擎或者靜态頁面或者Aspx頁面需要當心) 原理說一下:比如你是一個接受使用者的超連結:<a href="http://www.dkill.net?mmd=ddf">什麼鬼?</a> 如果使用者mmd輸入的是這個構造呢?===> "></a><script src="//cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><a>
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
想一想,為什麼這樣構造?==》這樣構造不影響他正常使用,那發現的幾率就小了
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
解決方法:Url.Encode 諸如這種的寫法以後就不要出現了,如果是因為帶了特殊符号而傳不過來可以編碼後再傳
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
如果你的視圖是aspx的記得過濾HTML,JS,URL哦~基本上問題都出在這 推薦使用:AntiXSS

7.布局系列

 1._ViewStart MVC5以前都是要手動引用”母版頁“
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
自從MVC5有了_ViewStart.cshtml,感覺整個春天都來了
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
視圖都不需要引用”母版頁“了(預設就全部引用了_Layout)
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
2.RenderSection~~呈現特别的節部分 一般不推薦這麼寫:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
如果子頁面沒有定義Footer的節,那麼就報錯了
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
其他兩種寫法:子頁中定義了Footer就顯示子頁的,沒有定義就顯示預設
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
另一種方式(逆天用的比較多):@RenderSection("Footer", false)
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
3.@RenderBody() 呈現子頁的主體内容
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
-------------------------------------------------------------------- 4.部分視圖(主要就是Html.Partial 、 Html.RenderPartial、Html.RenderAction) 先說下這兩個的差別:Html.Partial 和 Html.RenderPartial
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
效果:(Html.Partial直接顯示視圖部分,不經過控制器)
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
再說下Html.RenderPartial 和 Html.RenderAction RenderPartia l咋一看和 RenderAction 差不多,但===》(RenderPartia 我不怎麼用,感謝2樓朋友指正錯誤) 來看例子:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
 而RenderAction卻可以顯示:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
------------------------------------- 重頭戲來了~那麼對于異步咋辦呢?怎麼就報錯了呢?(參考我的這個文章:http://www.cnblogs.com/dunitian/p/5481138.html) 可能有些人還不知道“異步是什麼鬼”,呃呃。。。 好吧,舉個例子,具體的不在本文研究之中,可以自信搜尋或者關注後續的文章
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
步入正軌,繼續我們的分部視圖講解: 控制器部分:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
調用:
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
有時候你這樣寫也不會報錯,那是因為你沒有的異步等待沒有被阻止,或者你版本比較高
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
 分部視圖推薦寫法: @{Html.RenderAction("xx", "xxx");} Html.Partial 推薦應用場景:Seo,CSS,Script
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理
探索ASP.NET MVC5系列之~~~2.視圖篇(上)---包含XSS防禦和異步分部視圖的處理

參考:http://www.2cto.com/Article/201201/115876.html

http://blog.csdn.net/jingmeifeng/article/details/7788603

作者:毒逆天

出處:https://www.cnblogs.com/dotnetcrazy

打賞:<b>18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z</b>

本文版權歸作者和部落格園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接!

mvc

繼續閱讀