模型,视图,控制器
名称空间: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: