首页 新闻 会员 周边 捐助

关于MVC中使用基控制器后,使用JsonResult不会转向的问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-07-30 18:41

写了个基控制器BaseController,重写了 OnActionExecuting

protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            string sessionId = Request["mysessionid"];
            if (!string.IsNullOrWhiteSpace(sessionId))
            {
                object obj = CacheHelper.Get(sessionId);
                currentUser = obj as User;
                if (currentUser == null)
                {
                    filterContext.Result = new RedirectResult(passportlogin);
                }
                CacheHelper.Set(sessionId, currentUser, DateTime.Now.AddDays(7), TimeSpan.Zero);
            }
            else
            {
                filterContext.Result = new RedirectResult(passportlogin);
            }
            base.OnActionExecuting(filterContext);
        }

,然后其它的控制继续于它。

访问普通的ActionResult action的时候,如果没有登录,可以正常转向到passportlogin。

前台还有一些ajax功能,如下:

<script type="text/javascript">
        function vote(contentid, vote) {
            $.post("/a/vote", { "contentid": contentid, "vote": vote }, function (data) {
                alert(data);
            });
        }
    </script>

其中a控制器继续于BaseController,vote这个action是JsonResult,发现,如果用户没有登录,并不会发生转向。

DZCMS的主页 DZCMS | 初学一级 | 园豆:5
提问于:2014-07-30 10:11
< >
分享
最佳答案
0

JS接收数据肯定是不会跳转的。只会接受到后台passportlogin生成的html。你需要在回调方法中做判断,然后用脚本控制跳转才行呢。

收获园豆:10
幻天芒 | 高人七级 |园豆:37207 | 2014-07-30 10:15

问题是我现在断点跟踪,发现根本不能进入这个vote action,所以没法判断。

DZCMS | 园豆:5 (初学一级) | 2014-07-30 10:35

@abc54288: 你是不是在这个action上加了[HttpGet]

幻天芒 | 园豆:37207 (高人七级) | 2014-07-30 10:53

@幻天芒: 没有加[HttpGet]。在执行action前执行的是OnActionExecuting,所以在OnActionExecuting里已经执行了跳转代码,但是前台是JS不知道怎么跳转了。

前台也接收不到passportlogin的值。

DZCMS | 园豆:5 (初学一级) | 2014-07-30 13:38

@abc54288: 前台收到的应该是你跳转后的页面内容。如果要坚持这种做法,可以用返回的结果进行文本判断。

幻天芒 | 园豆:37207 (高人七级) | 2014-07-30 14:12

@幻天芒: 换成$.ajax(...)解决了。

既然没登录时不会执行到vote,那就在error里弹出吧。

感谢回复。

DZCMS | 园豆:5 (初学一级) | 2014-07-30 18:40

@abc54288: 另辟蹊径,不失为一种办法...

幻天芒 | 园豆:37207 (高人七级) | 2014-07-30 19:40
其他回答(1)
0

为什么我用ajax不行呀? 是不是不能用POST

¤SunShine¤→ | 园豆:136 (初学一级) | 2016-11-08 11:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册