gcogco10 Ответов: 0

Почему связь между контроллером, представлением и моделью не работает?


Привет Команда

Мой контроллер, похоже, не работает, я создал следующую логику для создания новых пользователей в моей таблице из базы данных. Теперь проблема заключается в том, что мой идентификатор пользователя, когда он проверен, равен нулю, и как я могу улучшить это лучше?

Что я уже пробовал:

  [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult CreateLogin(LoginCreateModel objSubmit)
        {
                if(objSubmit.btnSubmit == "Create")
            {
                ViewBag.Message = "Details saved successfully";
            }
            return View(objSubmit);
        }

       
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Login(Login login)
        {
            if (ModelState.IsValid)
            {
                bool success = WebSecurity.Login(login.username, login.password, false);
                var UserID = GetUserID_By_UserName(login.username);
                var LoginType = GetRoleBy_UserID(Convert.ToString(UserID));

                if (success == true)
                {
                    if (string.IsNullOrEmpty(Convert.ToString(LoginType)))
                    {
                        ModelState.AddModelError("Error", "Rights to User are not Provide Contact to Admin");
                        return View(login);
                    }
                    else
                    {
                        Session["Name"] = login.username;
                        Session["UserID"] = UserID;
                        Session["LoginType"] = LoginType;

                        if (Roles.IsUserInRole(login.username, "Admin"))
                        {
                            return RedirectToAction("AdminDashboard", "Dashboard");
                        }
                        else
                        {
                            return RedirectToAction("UserDashboard", "Dashboard");
                        }

                    }

                }
                else
                {
                    ModelState.AddModelError("Error", "Please enter valid Username and Password");
                    return View(login);
                }



            }
            else
            {
               ModelState.AddModelError("Error", "Please enter Username and Password");
                return View(login);
            }

        }

namespace eNtsaPortalWebsiteProject.Models
{
    public class LoginCreateModel
    {
        [Required]
        [StringLength(100,ErrorMessage = "The {0} must be least {2} characters long", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string password { get; set; }


        [Required]
        public string username { get; set; }

        public string btnSubmit { get; set; }
    }
}

ZurdoDev

Вам нужно это отладить. Мы не можем запустить ваш код, поэтому я не уверен, что вы хотите, чтобы мы сделали.

gcogco10

UserID пуст, у меня есть оператор insert в этой таблице с данными. До сих пор я не могу получить только значение null, как струна на моей трассировки стека.

Richard Deeming

Таким образом, метод, который мы не видим, работает с базой данных, к которой мы не можем получить доступ, используя входные данные, которые мы также не видим, - это перенастройка null.

И вы думаете, что мы можем отладить это для вас?

Все, что я могу предложить, это чтобы вы переместили GetUserID_By_UserName и GetRoleBy_UserID звонки внутри здания if (success) ветвь, так как они нужны только в том случае, если вход в систему будет успешным.

Кроме того, вам нужно будет отладить свой код.

0 Ответов