关闭页面特效

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方法里面,执行这个方法。

public virtual void Application_EndRequest(object sender, EventArgs e) { RunEvents((events) => { events.Application_EndRequest(sender, e); }); }

嘿嘿,这个RunEvent是底层的方法,被我发现了。

protected virtual void RunEvents(Action<IHttpApplicationEvents> action) { var events = EngineContext.Current.ResolveAll<IHttpApplicationEvents>(); foreach (var item in events) { action(item); } }

当我看到这个ResolveAll以后,我第一反应就是“依赖注入,控制反转”。当然这里我不深入研究。

我们看下面的

这里相当于循环执行了容器里面的所有方法,不然对不起这个RunEvent的名字啊。

到此为止,新增用户的操作就完成了,不过我还是感到一头雾水啊。。。。。。也许是我太笨了吧。


__EOF__

作  者ღKawaii
出  处https://www.cnblogs.com/kmsfan/p/Kooboo_CMS_Register_New_User.html
关于博主:一个普通的小码农,为了梦想奋斗
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   yangliwen  阅读(820)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
0
0
关注
跳至底部
document.getElementById("homeTopTitle").innerText="ღKawaii";
点击右上角即可分享
微信分享提示