Kooboo CMS - 之后台注册用户流程方法。
今天决定写一篇好一点的文章,吼吼!首先我们必须找到这个文件,这个文件是UsersController.cs,我们找到和添加新用户有关的方法,如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public virtual ActionResult Create() { return View(); } [HttpPost] public virtual ActionResult Create(CreateUserModel model, string @ return ) { var data = new JsonResultData(ModelState); if (ModelState.IsValid) { data.RunWithTry((resultData) => { UserManager.Add(model.ToUser()); data.RedirectUrl = @ return ; }); } return Json(data); } |
注意到这是一个虚方法,我指的是后面的POST请求带来的方法。
我们可以看到CreateUserModel里面有这些东西。这些东西都是我从VIEW里面带过来的。
这个jsonResultEntry就是我们的LAMBDA表达式左边的部分。
而里面的Action<JsonResultData>其实是一个匿名的委托方法。要说这2个东西,其实我个人感觉很有渊源啊,看下面的图
其实这个jsonResultEntry就是一个形式参数的入口。
我们打开这里面进行查看
{Method = {Void <Create>b__4(Kooboo.CMS.Common.JsonResultData)}}
不过为什么呢?既然这个方法是一个带参数的JsonResultData类型的。哈哈,我也不知道了。
下面是打断点到这之后的结果。
好吧,下面继续,居然到了这个方法。贴代码:
1 2 3 4 5 6 7 8 | protected override void InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) { if (actionResult is FileResult) { controllerContext.HttpContext.Response.RestoreRawOutput(); } base .InvokeActionResult(controllerContext, actionResult); } |
大家注意到了没有,这里居然有一个override的方法,这证明我们自己写了一个方法去覆盖系统原有的。
后面的ACTIONRESULT就是刚刚前一步返回的ActionResult.
下面的FILERESULT暂时不管。
哈哈,到这一步我才知道,原来最终还是调用基类的方法哦,我就说阿不咋这么叼,自己开始改MVC底层了,汗死。
进行了若干步骤以后。。。。到了一个httpapplicationHooker方法里面,执行这个方法。
嘿嘿,这个RunEvent是底层的方法,被我发现了。
当我看到这个ResolveAll以后,我第一反应就是“依赖注入,控制反转”。当然这里我不深入研究。
我们看下面的
这里相当于循环执行了容器里面的所有方法,不然对不起这个RunEvent的名字啊。
到此为止,新增用户的操作就完成了,不过我还是感到一头雾水啊。。。。。。也许是我太笨了吧。
__EOF__
作 者:ღKawaii
出 处:https://www.cnblogs.com/kmsfan/p/Kooboo_CMS_Register_New_User.html
关于博主:一个普通的小码农,为了梦想奋斗
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!

出处:http://www.cnblogs.com/kmsfan
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
欢迎大家加入KMSFan之家,以及访问我的优酷空间!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?