首页 > 解决方案 > 如何根据Controller中的RoleId调用ajax内的Session?

问题描述

Id我需要根据我的控制器和脚本页面中的哪个网页来调用某个网页,user.RoleId它需要RoleId使用会话来调用它。

我的控制器:

if (ModelState.IsValid)
            {
                var user = db.UserInfoes.ToList().Where(x => x.UserName == input.name && x.Password == input.password).FirstOrDefault();
                var casemanagers = db.CaseRegistrations.ToList();
                

                if (user != null)
                {
                    var CategoryId = db.Agencies.Where(x => x.AgencyId == user.AgencyId).Select(x => x.CategoryId).FirstOrDefault();
                    var CategoryName = db.AgencyCategories.Where(x => x.Id == CategoryId).Select(x => x.CategoryName).FirstOrDefault();
                    Session["username"] = user.UserName;
                    Session["userRole"] = user.RoleId.ToString(); ---> This is user.RoleId mentioned
                    Session["userAgency"] = user.AgencyId;
                    Session["userId"] = user.UserId;
                    Session["CategoryId"] = CategoryId;
                    Session["CategoryName"] = CategoryName;
                }
                else
                {
                    return Json("Invalid Credential");
                }
                if (Session["userRole"] != null)
                {
                    
                    return Json(user);
                }
              
            }
            return Json(status);

我的观点:

<script>
        $(document).ready(function () {
            $('#btnSubmit').click(function () {   ---> This is where it needs to be called upon onclick
                var username, password;
                username = $('#txtusername').val();
                password = $('#txtpassword').val();
                if (username == '') { $('#txtusername').addClass('error'); return; }
                else { $('#txtusername').removeClass('error'); }
                if (password == '') { $('#txtpassword').addClass('error'); return; }
                else { $('#txtpassword').removeClass('error'); }
                var input = {};
                input.name = username;
                input.password = password;
                $('#cover-spin').show(0);
                $.ajax({
                    url: '@Url.Action("GetUserInfo", "Login")',
                    type: "POST",
                    data: JSON.stringify(input),
                        dataType: "json",
                        contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        if (data.Session["userRole"] == 4 ) {
                                window.location.href = '@Url.Action("Details", "CaseRegistration")';
                                $('#cover-spin').hide(0);
                            }
                            else {
                            location.href = '/Dashboard/Index';
                                $('#cover-spin').hide(0);x
                                alert(data);
                            }
                        },
                    error: function () {
                        alert("An error has occured!!!");
                        }
            })
            })
        })
    </script>

标签: asp.net-mvcmodel-view-controllerdatabase-first

解决方案


你应该改变这部分:

(data.Session["userRole"] == 4 ) 

至:

(data.RoleId == 4 ) 

顺便说一句,您可以优化控制器代码。


推荐阅读