九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
ASP.NET 控制器和動(dòng)作方法

1.什么樣的類能成為控制器?

在ASP.NET MVC 中,直接或者間接地實(shí)現(xiàn)了IController接口的類,就會(huì)被Mvc框架認(rèn)為是控制器。

從代碼中,看到此接口有一個(gè)唯一的方法Execute,此方法會(huì)在請(qǐng)求到達(dá)控制器的時(shí)候被調(diào)用。
如果我們定義一個(gè)類實(shí)現(xiàn)直接實(shí)現(xiàn)此接口,也就意味著我們必須寫大量的代碼去處理請(qǐng)求。好在Mvc框架為我們定義一個(gè)Controller抽象類,我們直接可以此類派生,就可以獲取到大量的處理請(qǐng)求的邏輯,我們只需要定義動(dòng)作方法即可。

2.Mvc框架怎么知道需要用哪個(gè)控制器?

 3. 控制器從哪些地方訪問(wèn)輸入的數(shù)據(jù)?

   主要是從三個(gè)地方: 1)通過(guò)上下文對(duì)象提取數(shù)據(jù)。 2)作為參數(shù)傳給動(dòng)作方法而形成的數(shù)據(jù)。3)明確的調(diào)用Mvc框架的模型綁定特性。

    1)當(dāng)我從Controller抽象類派生出自己的控制器時(shí),我們就自動(dòng)的得到了一批便利的屬性,這些屬性能夠訪問(wèn)和請(qǐng)求相關(guān)的數(shù)據(jù),這些對(duì)象有Request,Response,RouteData,HttpContext,Server.  

    2)① 使用動(dòng)作方法參數(shù),Mvc不允許動(dòng)作方法有ref回out參數(shù),Mvc遇到這個(gè)情況,就直接拋出異常。

        ② Mvc框架會(huì)幫我自動(dòng)對(duì)動(dòng)作方法進(jìn)行賦值,而不需要我們手動(dòng)檢查上下文對(duì)象來(lái)賦值。 Mvc給動(dòng)作方法賦值也是檢查上下文對(duì)象來(lái)完成的。

        這些上下文對(duì)象包括Request.QueryString,Request.Form和RouteData.Values。對(duì)參數(shù)的名稱的處理是不區(qū)分大小的。比如動(dòng)作方法的一個(gè)參數(shù)為city, 那么                       Request.QueryString[“city”]或者Request.QueryString[“City”]都可以。

        ③ 參數(shù)對(duì)象怎么實(shí)例化的?底層的Controller類使用了叫“值提供器”和“模型綁定”的組件來(lái)為動(dòng)作方法獲取參數(shù)值。

        ④ 在Mvc框架中;如果找不到一個(gè)引用類型的參數(shù)的值,動(dòng)作方法還會(huì)調(diào)用。不過(guò)這個(gè)參數(shù)的值被設(shè)置為null,可以說(shuō)引用類型的參數(shù)是可選的。

         如果動(dòng)作方法的參數(shù)的類型是值類型,Mvc找不到這個(gè)參數(shù)的值,就會(huì)拋出異常??梢哉f(shuō)值類型的參數(shù)是必須的。想讓值類型的參數(shù)變成可選,

         有2種方法:其一讓參數(shù)義成可空類型?;蛘呓o參數(shù)設(shè)置默認(rèn)值。

        ⑤ 如果不想處理不含動(dòng)作方法參數(shù)值得請(qǐng)求,但又不想在代碼中檢查null或者拋出異常,可以使用C#的一個(gè)可選參數(shù)特性來(lái)代替:為參數(shù)指定默認(rèn)。

          

 3.控制器是怎么產(chǎn)生輸出的?

   Mvc框架通過(guò)使用“動(dòng)作結(jié)果(Action Result)”把指明意圖和執(zhí)行意圖分開(kāi)。我們不是直接使用Response對(duì)象,而是返回一個(gè)派生于ActionResult類的對(duì)象。這個(gè)對(duì)象描述了控制器響應(yīng)要完成的功能。例如渲染一個(gè)視圖或者重定向到另一個(gè)URL或者動(dòng)作方法等。

  Mvc框架從一個(gè)動(dòng)作方法接受到一個(gè)ActionResult對(duì)象時(shí),Mvc框架就會(huì)調(diào)用由這個(gè)類所定義的ExecuteResult方。r然后改動(dòng)作結(jié)果的實(shí)現(xiàn)處理Response對(duì)象,生成符合你意圖的輸出。

 Mvc框架中有許多的內(nèi)置的動(dòng)作結(jié)果類型,這些類型都是派生于ActionResult,其中有不少類型在Controller類中有便利的方法。

---------

Mvc框架查找視圖位置的順序:

(應(yīng)用程序使用了區(qū)域就從此處開(kāi)始查找視圖)

/Areas/<AreaName>/Views/<controllerName>/<ViewName>.aspx

/Areas/<AreaName>/Views/<controllerName>/<ViewName>.ascx

/Areas/<AreaName>/Views/Shared/<ViewName>.aspx

/Areas/<AreaName>/Views/Shared/<ViewName>.ascx

/Areas/<AreaName>/Views/<controllerName>/<ViewName>.cshtml

/Areas/<AreaName>/Views/<controllerName>/<ViewName>.vbhtml

/Areas/<AreaName>/Views/Shared/<ViewName>.cshtml

/Areas/<AreaName>/Views/Shared/<ViewName>.vbhtml

(應(yīng)用程序沒(méi)有使用區(qū)域就從此處開(kāi)始查找,或者使用了區(qū)域,但早上面沒(méi)有找到視圖,就會(huì)接著道下面的地方查找)

/Views/<controllerName>/<ViewName>.aspx

/Views/<controllerName>/<ViewName>.ascx

/Views/Shared/<ViewName>.aspx

/Views/Shared/<ViewName>.ascx

/Views/<controllerName>/<ViewName>.cshtml

/Views/<controllerName>/<ViewName>.vbhtml

/Views/Shared/<ViewName>.cshtml

/Views/Shared/<ViewName>.cshtml

(ControllerName):控制器名稱名稱去掉"Controller"字符串之后的字符串。

①M(fèi)vc框架只要在一個(gè)位置查找到了視圖,就會(huì)停止查找動(dòng)作,而這個(gè)找到的視圖便被用來(lái)把響應(yīng)渲染給客戶端。

②Mvc框架搜索視圖的目錄序列是“約定優(yōu)于配置”。不需要注冊(cè)視圖文件,只需要你把視圖文件放在一組已知的位置中,Mvc框架便可以識(shí)別他們。

④我們可以為View方法提供一個(gè)明確的路徑并繞過(guò)搜索階段來(lái)完成指定指定的視圖。在指定一個(gè)視圖時(shí)候,路徑必須以“~/”或者“/”開(kāi)始,并且包含文件的擴(kuò)展名。

---------

怎么把數(shù)據(jù)從動(dòng)作方法傳遞給視圖。

⑴ 給視圖提供一個(gè)模型對(duì)象。

  可以把一個(gè)對(duì)象作為View方法的參數(shù)發(fā)送給視圖。

這樣我們可以再視圖中使用Model關(guān)鍵字訪問(wèn)此對(duì)象了。

⑵ 用ViewBag傳遞數(shù)據(jù)

   該特性允許你在一個(gè)動(dòng)態(tài)的對(duì)象上定義任何的屬性,并在視圖中訪問(wèn)它。

⑶ 使用ViewData傳遞數(shù)據(jù)

   ViewData特性類似于View Bag特性,他是用ViewDataDictionary類實(shí)現(xiàn)的,而不是動(dòng)態(tài)對(duì)象。

   ViewDataDictionary類類似于規(guī)則的“鍵/值”集合。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ASP.NET MVC 應(yīng)用程序中的控制器和操作方法
ASP.NET MVC框架:使用強(qiáng)類型類來(lái)傳遞ViewData
springmvc
spring MVC 常用ViewResolver & View
MVC基礎(chǔ)、Model2的MVC和Struts2的MVC
《Zend Framework in Action》 《ZF實(shí)戰(zhàn)》 中文翻譯
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服