Kooboo CMS - 之后台注册用户流程方法。

  今天决定写一篇好一点的文章,吼吼!首先我们必须找到这个文件,这个文件是UsersController.cs,我们找到和添加新用户有关的方法,如下代码:

        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类型的。哈哈,我也不知道了。

下面是打断点到这之后的结果。

好吧,下面继续,居然到了这个方法。贴代码:

        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的名字啊。

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

时间: 2024-08-02 03:22:32

Kooboo CMS - 之后台注册用户流程方法。的相关文章

Kooboo CMS - Html.FrontHtml[Helper.cs] 各个方法详解

下面罗列了方法详解,每一个方法一篇文章. Kooboo CMS - @Html.FrontHtml().HtmlTitle() 详解 Kooboo CMS - Html.FrontHtml.Position 详解 Kooboo CMS - @Html.FrontHtml().Meta()详解

Kooboo CMS 无聊随笔 (1)

因为公司的框架不开源,但是自己一直都有研究框架的兴趣,所以拿了一个开源的框架过来,而这个开源的框架就是Kooboo CMS.首先我无法用言语来形容我对这个CMS的赞美之词了,总之大家知道一点,这个CMS是一款非常棒的CMS,功能非常强大,代码也写得非常的好,很有研究价值. 由于不是所有的的人对Kooboo CMS有了解,我还是做一个简单的介绍吧,算作这个系列的开篇. http://www.cnblogs.com/hjf1223/archive/2009/08/15/Kooboo_CMS.html

帝国CMS弹出登录窗口实现方法

帝国CMS弹出登录窗口实现方法 看到好多网站都用弹出登陆窗口让用户登陆注册,其实就是用JS调用一个DIV层实现的 今天我用帝国CMS具体讲一下怎么实现这个效果: 一.打开帝国CMS后台-公共模板-JS讲用登陆模板 把附件里的调用登陆模板代码复制进去-修改 二.在你的首页加入CSS样式和JS代码 1.CSS: <style> #lggoodBox{ margin:0 auto; padding:0px; text-align:left; width:370px; height:220px; ba

WordPress 前端投稿/编辑发表文章插件 DJD Site Post(支持游客和已注册用户)汉化版 免费下载

插件简介 前面逍遥乐给大家推荐了 WordPress用户前端化专业版WP User Frontend Pro WordPress中文汉化插件v2.1.9 今天逍遥乐给大家带来的wordpress插件是 WordPress 前端投稿/编辑插件 DJD Site Post,它不仅支持已注册用户投稿,还支持给匿名游客投稿,而且在投稿界面添加了登录链接,登录成功后自动返回投稿界面,体验很不错.该插件还允许用户上传媒体文件,集成WP自身的编辑器(可后台设置),支持选择分类和添加标签等等.支持有新文章投稿时

Kooboo CMS 之TextContent详解

TextCotent 在Kooboo.CMS.Content下面,在View中有使用到这个模型层. TextContent继承了ContentBase,而ContentBase是由2个部分类组成的,一个是内容对象基类的子类,另一个是实现了持久化.那...我们该如何去理解呢,这里我用PS画一幅图大家就懂了.TextContent有3个构造函数,其中这2个构造函数都和基类(ContentBase)有关系.这3个构造函数分别如下: /// <summary> /// Initializes a ne

c#如何对共享软件的登录,注册用户等进行网络授权认证

用c#开发共享软件,传统的是采用注册码验证方式,这种方式是大多数共享软件采用的方式,另外还有一种常见的验证方式,就是通过网络授权认证的方式,这种方式通过在程序中调用服务器的服务进行.一般具有验证用户名可用.注册新用户.用户登录认证.用户修改密码等操作,另外还需要配备一个网络授权入口给管理员对注册的用户进行授权控制. 这个是为了进行网络授权认证搭建的一个简单的管理后台,用户在共享软件客户端通过调用服务器的服务连接,可以注册一个新用户,或者进行登录获取身份信息(试用.已注册.已禁用等状态),还可以通

织梦登录后台变空白解决方法大全

原文链接: http://yunkus.com/dedecms-login-page-goes-blank-solutions/ 相信很多站长在转空间的时候都会发生这样或者那样的问题,如常见的用织梦cms做的网站转到新空间后,网站管理后台无法登录了,输入网址竟然显示空白,什么都没有了.下面就给大空分享下一些解决织梦后台登录空间的方法. 方法一:修改include/userlogin.class.php文件 找到include/userlogin.class.php,把这六行代码注释掉: @ses

【从0开始Tornado建站】显示所有注册用户

显示注册用户的前台主要代码如下: {%block content%} <ul> {%for i in users%} <li><a href='/user/{{i[1]}}' class='text-success h4'>{{i[1]}}<small>({{i[3]}}星级)</small></a></li> {%end%} <br/> </ul> {%end%} 显示注册用户的后台代码如下: c

WordPress 前端投稿/编辑插件 DJD Site Post(支持游客和已注册用户)

说到前端用户投稿,倡萌之前推荐过3个不错的插件: WordPress匿名投稿插件:DX-Contribute (有朋友反馈不能用) WordPress投稿插件:User Submitted Posts (貌似没有集成编辑器,编辑文章不是很方便) WordPress 前端用户中心插件:WP User Frontend (免费版功能不太齐全) 今天要给大家推荐的这个 WordPress 前端投稿/编辑插件 DJD Site Post,它不仅支持已注册用户投稿,还支持给匿名游客投稿,而且在投稿界面添加