ActionResult子類演示
1、ViewResult() -->action方法中要想返回視圖,則要使用ViewResult (MVC開發(fā)中用的最多)
2、ContentResult() -->返回內(nèi)容之用(特點,可以不需要有對應的視圖) Home/ContentResultDemo中有示例
3、JsonResult() -->HomeController 的JsonDemo() 可以用作Ajax請求 ,注意:如果是get請求,則一定是要在Json()中寫入:JsonRequestBehavior.AllowGet
4、FileResult() -->HomeController 的FileResultDemo() 可以用作畫驗證碼,也可以利用它來實現(xiàn)文件的下載
5、HttpStatusCodeResult() --》用戶自己設(shè)置需要響應的狀態(tài)碼
6、javaScriptResult 注意:Javascript配合視圖中的<script rc="">
7、RedirectResult():執(zhí)行頁面跳轉(zhuǎn)本質(zhì)上是在響應報文頭中產(chǎn)生了 Location:要跳轉(zhuǎn)的頁面的虛擬路徑 命令
8、RedirectToRouteResult :當系統(tǒng)中路由規(guī)則比較多的時候,可以由程序員指定使用哪個路由規(guī)則來生成url
_ViewStart.cshtml:
View根目錄下的_ViewStart.cshtml 先執(zhí)行 然后再執(zhí)行對應文件夾下的_ViewStart.cshtml 最后執(zhí)行訪問的cshtml頁面
.NET里面webform的后綴是aspx WCF和WebService的后綴是asmx 一般處理程序后綴是ashx
MVC布局頁:
@RenderBody() 占位符 將來會被使用此布局的子頁面內(nèi)容覆蓋掉 只能在layout中出現(xiàn)一次
@Style.Render(); @Script.Render(); 獲取Bundle中的樣式和js文件 根據(jù)虛擬路徑找到該虛擬路徑下注冊好的所有物理文件響應給瀏覽器 使用原因:減少http請求 自動壓縮js和CSS的大小 方便程序員調(diào)用
分部視圖:
分部視圖是什么? 類似于asp.net webform(aspx)中的自定義控件.ascx
作用:可以將相同的邏輯塊寫到分部視圖中,供其他視圖來使用
引用:@Html.RenderAction(PartialView,controller )
@RenderSection(“script”,required:false) 表示script可以在子類中重寫 也就是說有此占位符才可以在子類寫js。RenderSection 所定義的標簽,可以被子頁面重寫,如果required設(shè)置成true,則必須子頁面重寫,如果是false可以不重寫也可以重寫
在cshtml視圖上,如果將視圖變成一個List<GroupInfo>的強類型視圖,那么在使用@Html.DisplayNameFor(a=>a.GroupId)會報錯,這是因為Razor視圖經(jīng)過編譯發(fā)現(xiàn)List是一個具體的class所以a就推斷成List<GroupInfo>,可以通過將List<GroupInfo>改成IEnumerable<GroupInfo>來解決
html控件:
@Html.ActionLink("跳轉(zhuǎn)","About","Home",new { Word ="a"},new { @class="aa",@id="abc"})
相當于:<aclass="aa" href="/Home/About?word=a" id="abc">跳轉(zhuǎn)</a>
MVC路由
/路由支持默認值 如下的Api
routes.MaPRoute(
name: "Default",
url: "Api/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//通過正則確定參數(shù)的類型
,constraints:new {id="//d+"},
//定義了此路由的命名空間
namespaces: new string[] { "MVCRoute.Controllers" }
//好處:
//1、可以自動去MVC站點的bin目錄查找指定命名空間下的控制器類,大大節(jié)省了查 找時間,效率更優(yōu)
//2、方便同一個路由規(guī)則在不同控制器之間的切換
//忽略路由
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//忽略某一種拓展資源或拓展名
routes.IgnoreRoute("{resource}.do/{*pathInfo}");
//MVC中有2種視圖引擎 一種是aspx 另一種是Razor 并且排序為 1.aspx視圖引擎 2.Razor視圖引擎 使用此方法可以把aspx的搜索引擎屏蔽掉 提高搜索效率
在MVC項目下的Global文件中加入:
ViewEngines.Engines.RemoveAt(0);
新聞熱點
疑難解答