下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】ASP.NET中Controller與Action如何使用
Controller&Action的定義和使用/upload/information/20210522/379/535400.pngController的查找機(jī)制Microsoft.AspNet.Mvc
Microsoft.AspNet.Mvc.Core
Microsoft.AspNet.Mvc.ModelBinding
Microsoft.AspNet.Mvc.Razor
Microsoft.AspNet.Mvc.Razor.Host
Microsoft.AspNet.Mvc.TagHelpers
Microsoft.AspNet.Mvc.Xml
Microsoft.AspNet.PageExecutionInstrumentation.InterfacesMicrosoft.AspNet.Mvc
Microsoft.AspNet.Mvc.Core
Microsoft.AspNet.Mvc.ModelBinding
Microsoft.AspNet.Mvc.Razor
Microsoft.AspNet.Mvc.Razor.Host
Microsoft.AspNet.Mvc.TagHelpers
Microsoft.AspNet.Mvc.Xml
Microsoft.AspNet.PageExecutionInstrumentation.Interfacespublic
interface
IAssemblyProvider
{
IEnumerable
CandidateAssemblies
{
get;
}
}services.AddMvc().WithControllersAsServices(new[]
{
typeof(MyController).Assembly,
typeof(ExternalPocoController).Assembly
});var
col
=
this.Resolver.GetRequiredService();
var
data
=
col.GetReferencingLibraries("Microsoft.AspNet.Mvc");protected
virtual
IEnumerableGetCandidateLibraries()
{
if
(ReferenceAssemblies
==
null)
{
return
Enumerable.Empty();
}
//
GetReferencingLibraries
returns
the
transitive
closure
of
referencing
assemblies
//
for
a
given
assembly.
return
ReferenceAssemblies.SelectMany(_libraryManager.GetReferencingLibraries)
.Distinct()
.Where(IsCandidateLibrary);
}Controller的判斷public
interface
IControllerTypeProvider
{
IEnumerable
ControllerTypes
{
get;
}
}protected
internal
virtual
bool
IsController([NotNull]
TypeInfo
typeInfo,
[NotNull]
ISet
candidateAssemblies)
{
if
(!typeInfo.IsClass)
//
該類型必須是一個(gè)類
{
return
false;
}
if
(typeInfo.IsAbstract)
//
該類必須不是抽象類
{
return
false;
}
//
We
only
consider
public
top-level
classes
as
controllers.
IsPublic
returns
false
for
nested
//
classes,
regardless
of
visibility
modifiers
if
(!typeInfo.IsPublic)
//
該類必須是一個(gè)Public類(并且不嵌套),嵌套類不能作為Controller
{
return
false;
}
if
(typeInfo.ContainsGenericParameters)
//
該類不能是泛型類
{
return
false;
}
if
(!typeInfo.Name.EndsWith(ControllerTypeName,
StringComparison.OrdinalIgnoreCase)
&&
!DerivesFromController(typeInfo,
candidateAssemblies))
//
該類以Controller結(jié)尾,或繼承于Controller基類,或其父類也是Controller。
{
return
false;
}
if
(typeInfo.IsDefined(typeof(NonControllerAttribute)))
//
該類不能設(shè)置NonControllerAttribute特性
{
return
false;
}
return
true;
}services.AddMvc().WithControllersAsServices(new[]
{
typeof(MyController),
typeof(ExternalPocoController)
});Action的查找機(jī)制public
Task
SelectAsync([NotNull]
RouteContext
context)
{
//
...
}public
Task
SelectAsync([NotNull]
RouteContext
context)
{
//
...
}public
IEnumerable
BuildActionModels([NotNull]
TypeInfo
typeInfo,
[NotNull]
MethodInfo
methodInfo)
{
if
(!IsAction(typeInfo,
methodInfo))
{
return
Enumerable.Empty();
}
//
省略其它代碼
}protected
virtual
bool
IsAction([NotNull]
TypeInfo
typeInfo,
[NotNull]
MethodInfo
methodInfo)
{
//
The
SpecialName
bit
is
set
to
flag
members
that
are
treated
in
a
special
way
by
some
compilers
//
(such
as
property
accessors
and
operator
overloading
methods).
if
(methodInfo.IsSpecialName)
//
不能是特殊名稱(如重載的操作符或?qū)傩栽L問器)
{
return
false;
}
if
(methodInfo.IsDefined(typeof(NonActionAttribute)))
//
不能聲明NonActionAttribute特性
{
return
false;
}
//
Overriden
methods
from
Object
class,
e.g.
Equals(Object),
GetHashCode(),
etc.,
are
not
valid.
if
(methodInfo.GetBaseDefinition().DeclaringType
==
typeof(object))
//不能是重載的方法,比如Equals和GetHashCode
{
return
false;
}
//
Dispose
method
implemented
from
IDisposable
is
not
valid
if
(IsIDisposableMethod(methodInfo,
typeInfo))
//
不能是Dispose方法
{
return
false;
}
if
(methodInfo.IsStatic)
//
不能是靜態(tài)方法
{
return
false;
}
if
(methodInfo.IsAbstract)
//
不能是抽象方法
{
return
false;
}
i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年岳陽貨運(yùn)從業(yè)資格證模擬考試下載什么軟件
- 2025私家浴室用品特許經(jīng)營合同
- 2024年度公共交通設(shè)施維修與養(yǎng)護(hù)承包合同3篇
- 2024年度人才培訓(xùn)與咨詢服務(wù)合同5篇
- 2024年教育培訓(xùn)機(jī)構(gòu)在線平臺(tái)建設(shè)合同
- 茶文化產(chǎn)業(yè)園租賃聯(lián)營合同
- 2025標(biāo)準(zhǔn)土地買賣合同范本
- 2024年版:股權(quán)轉(zhuǎn)讓合同范本(附詳細(xì)條款)
- 音樂教師招聘協(xié)議模板
- 2025印刷品合同樣本
- 《玉米合理密植技術(shù)》課件
- 科技興國未來有我主題班會(huì)教學(xué)設(shè)計(jì)
- 《不穩(wěn)定型心絞痛》課件
- 江蘇省揚(yáng)州市邗江中學(xué)2025屆物理高一第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 自媒體宣傳采購項(xiàng)目競爭性磋商招投標(biāo)書范本
- 新保密法知識測試題及答案
- 2023年民航東北空管局人員招聘考試真題
- 2025(新統(tǒng)編版)八年級歷史上冊 第5單元 大單元教學(xué)設(shè)計(jì)
- 戶外施工移動(dòng)發(fā)電機(jī)臨時(shí)用電方案
- 《雁門太守行》說課稿
- 制作拼音卡片-空心涂色A4版本
評論
0/150
提交評論