模型,視圖,控制器
名稱空間:System.Web。 *,System.Web.mvc,System.Web.mvc。 *
URL:基礎/控制器/操作/參數
app_start的激流,例如:捆綁,過濾器,路由
控制器:
控制器/控制器底 - > ActionResult
屬性:varteraterequest,viewbag,用戶,會話,服務器,請求,響應,httpcontext,contrantercontext
方法:驗證,Action Results
要查看傳遞數據的控制器: * ViewBag,ViewData,Tempdata *在Action Result中創建的模型實例,以View()參數為 @Model App.models.person指定的指定的view()參數
視圖:
*.cshtml,剃須刀語法, @& @ {...}
@helper,@model,@section name {...}
屬性:html,ajax,viewbag,viewcontext,會話,用戶,上下文,請求,響應,服務器,緩存,佈局
方法:RenderBody(),Rendersection(),renderpage(), @styles.render(“ Bunde Url”), @scripts.render(“ Bunde url”)
@html/ajax helpers in @htmlattributes是匿名對象,例如:new {id =“ user”}
控制器和操作屬性:允許的,授權,httpget/httpget/delete/head/options/patch/pot/put/put/put,nontaction,validateantiforgerytoken,路線
行動:
[httpget/post/put/delete]指定方法的屬性
結果:重定向,部分,JSON,JAVASCRIPT,文件,內容,視圖,空,httpstatuscode
操作可以返回Action Result之外的其他類型,例如字符串。
操作參數傳遞為:
幫助者:
html:
方法:動作,動作鏈接,routelink,beginform,endform,antforgerytoken,Display,標籤,輸入相關方法,驗證相關方法
樣本形式:
@using (Html.BeginForm("action","controller", FormMethod.Post))
{
@Html.TextBox("tb1")
<button type="submit"/>
}
阿賈克斯:
方法:ActionLink,RoutElink,Begin Formform
AJAX中的BeginForm類似於HTML變化,並添加了Ajaxoptions對象參數。
Ajaxoptions提供了其他選項,例如要更新和回調功能的元素。
會議:
控制器和查看屬性,可用於會話管理。
瀏覽器獲取ASP.NET_SESSINID會話cookie。
可以作為索引類型訪問,將有用的會話信息存儲在價值中。
屬性和方法集中在會話及其集合/值對的集合上。
表格:
表格可以用普通的html寫:
<form method="post" action="/Home/NameAge">
<input type="text" name="name" />
<input type="number" name="age" />
<input type="submit"/>
</form>
使用動作方法將其看起來像:
[HttpPost]
public ActionResult NameAge(string name, int age)
{
ViewBag.Name = name;
ViewBag.Age = age;
return View();
}
自定義類型(書籍,人,...)可以用作操作參數,在這種情況下,輸入名稱屬性應匹配類型屬性的名稱。
如果有乘法參數,則輸入名稱屬性應匹配格式:parameter.property(person1.name)
指定要鍵入參數的輸入元素值:public ActionResult index([bind(include =“ id,name”)] perse){...}
@html.display/label/editorfor(m => m.age)進行數據綁定。
模型條件的數據註釋屬性。
服務器端驗證:view: @html.labelfor(m => m.firstname) @html.editorfor(m => m.firstname) @html.validationmessagefor(m => m.firstname)控制器:public action action raction insex index index()=> view() [httppost]公共行動索引索引(perse guy){if(modelState.isvalid){返回redirect(“ okview”); }返回視圖(Guy); }
文件下載:
文件上傳:
當我們使用表單上傳文件時,HttppostedFilebase及其派生類型被用作操作方法參數。
查看html.beginform方法採用其他參數:new {enctype =“ multipart/form-data”}
在操作中,我們調用file.saveas(@“ path”)以保存文件,
服務器屬性可用於將本地路徑映射到全局路徑。
基本結構:
app_start具有IdentityConfig.cs&startup.auth.cs文件
新的常見名稱空間:Microsoft.aspnet.Identity,Microsoft.aspnet.Identity*,Microsoft.owin,Microsoft.Owin.Security,Microsoft.Owin.Security*,System.Security.Claims.Claimss
控制器和視圖中的用戶屬性可用於獲取用戶數據。主要成員是Identity&Isinrole(字符串名稱)。
請訪問以查看是否對用戶進行身份驗證。
控制器具有帳戶controller,用於登錄/註冊操作。
模型具有帳戶視圖模型和IdentityModels。
常用的基本類型:IdentityUser,IdentityDbContext,Usermanager,SigninManager
常見類型:
IdentityUser,IdentityDbContext,Usermanager,SignInmanager,IauthenticationManager是帳戶管理中常用的類型。它們可以繼承和擴展。
IdentityUser包含用戶帳戶信息,例如用戶名,電子郵件密碼哈希。
IdentityDbContext是用於存儲用戶信息的EntityFramework數據庫上下文。
Usermanager可以創建,搜索和執行其他與用戶相關的操作。
SignInmanager可以在會話中登錄用戶,或者如果記住我,請以持久的方式檢查復選框。
IauthenticationManager可以註銷用戶。
資料庫:
測試數據庫位於App_Data文件夾中, *.mdf文件。連接字符串在web.config中,由ApplicationDbContext使用。
數據庫由下一個表組成:用戶,角色,USERCLAIMS,USERLOGINS,USERROLE。
OAuth2.0&OpenID連接:
獲得客戶端ID和秘密後,需要在app_start> startup.auth.cs中添加它們
在MVC中,此登錄類型稱為“外部”登錄。
角色和主張:
[授權]屬性用於僅允許在控制器/操作中認證的用戶。
[允許詞]覆蓋了這一點。
常規使用IdentityUserclaim和IdentityUserrole。
Applicationuser/Identityuser具有屬性角色和索賠。
Usermanager屬性可用於管理特定用戶的索賠/角色。
IdentityDbContext/ApplicationDbContext具有角色表。
Rolemanager是角色,UserManager是用戶的。
[授權(用戶=“ ...”,角色=“ ...”)]屬性參數可用於進一步約束控制器/操作訪問。
建立在MVC之上,以提供恢復服務開發所需的功能。
App_start具有處理API配置和API路由的Webapiconfig.cs,而不是由RouteConfig.cs完成
Apicontroller是由應用程序控制器繼承的類型。
baseurl/help提供生成的API文檔。
常用的測試工具是Postman&Fiddler。
行動:
Action方法名稱匹配HTTP方法,該方法用於訪問它們。
獲取/post/put/刪除API/控制器
動作返回類型可以是字符串,int,iEnumerable <t>等等,也可以是從ihttpactionResult派生的類型,例如ok(),notfound(),...
路由屬性上面的操作方法可以指定自定義路由以訪問它。
[來自Body]&[Fromuri]可以在Action方法參數上使用來指定其起源。
幫助頁(/幫助)包含API路線及其有關帳戶管理的描述。例如,API/帳戶/寄存器包含諸如HTTP方法和所使用的參數之類的信息。
登記:
/幫助API/帳戶/註冊說明如何創建帳戶。在Postman中,我們可以將郵政請求發送到該端點,並以X-WWW-Form-urlenCoded或Raw JSON的身份在身體中所需的數據。如果我們得到響應200可以,則創建帳戶
登錄 /獲取令牌:
這不是在幫助頁面上記錄的。我們從 /令牌路線獲得令牌。使用Body X-WWW-Form-urlencoded發表請求包含:Grant_Type:密碼,用戶名:電子郵件,密碼:密碼。
響應在身體中,其中包含JSON,我們需要訪問_token值才能向受保護的資源提出請求。
獲得受保護的資源:
從具有[授權]屬性的操作或控制器中獲取資源需要訪問令牌。
我們提出具有授權標頭的API/值的請求:“ Bearer Access_Token_Value”
外部auth / oauth2.0&oidc: