2015-09-10 1 views
0

Я пытаюсь использовать мой LoginStudentNumber как идентификатор входа, но каждый раз, когда я пытаюсь войти в систему, он не признает LoginStudentNumber. Однако страница входа в систему работает, когда я использую идентификатор входа LoginID как идентификатор входа. Это мой Логин таблице:не удается использовать LoginStudentNumber как мой логин ID

LoginID(Pk)  LoginStudentNumber  LoginPassword 
    1     123456     1234 
    2     234567     2345 
    3     345678     3456 

Я не могу понять, почему он признает LoginID но не LoginStudentNumber.

Я пытался возиться с этой строки кода, в частности (в моем контроллере):

RMS.Models.Login user = db.Logins.Find(LoginID); 

Вот остальная часть моего кода:

Войти Контроллер:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using RMS.DAL; 
using RMS.Models; 

namespace RMS.Controllers 
{ 
    public class LoginController : Controller 
    { 
     RMSContext db = new RMSContext(); 


     [AllowAnonymous] 
     public ActionResult Login(string returnUrl) 
     { 
      ViewBag.ReturnUrl = returnUrl; 
      return View(); 
     } 

     // 
     // POST: /Account/Login 
     [HttpPost] 
     [AllowAnonymous] 
     public ActionResult Login(Login model, int? LoginID, string LoginPassword) 
     { 


      RMS.Models.Login user = db.Logins.Find(LoginID); 


      if (user == null) 
      { 
       ModelState.AddModelError("", "Invalid User Id"); 

       return View(model); 
      } 



      if (user.LoginPassword.Equals(LoginPassword)) 
      { 

       return RedirectToAction("Index", "Home"); 


      } 

      ModelState.AddModelError("", "Invalid Password"); 
      return View(model); 

     } 
    } 
} 

Войти Вид:

@model RMS.Models.Login 

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta name="description" content="Creative - Bootstrap 3 Responsive Admin Template"> 
    <meta name="author" content="GeeksLabs"> 
    <meta name="keyword" content="Creative, Dashboard, Admin, Template, Theme, Bootstrap, Responsive, Retina, Minimal"> 
    <link rel="shortcut icon" href="img/favicon.png"> 

    <title>Login</title> 

    <!-- Bootstrap CSS --> 

    <link href="~/Content/bootstrap.min.css" rel="stylesheet" /> 
    <!-- bootstrap theme --> 

    <link href="~/Content/bootstrap-theme.css" rel="stylesheet" /> 
    <!--external css--> 
    <!-- font icon --> 

    <link href="~/Content/elegant-icons-style.css" rel="stylesheet" /> 

    <link href="~/Content/font-awesome.css" rel="stylesheet" /> 
    <!-- Custom styles --> 

    <link href="~/Content/style.css" rel="stylesheet" /> 

    <link href="~/Content/style-responsive.css" rel="stylesheet" /> 

    <!-- HTML5 shim and Respond.js IE8 support of HTML5 --> 
    <!--[if lt IE 9]> 
    <script src="js/html5shiv.js"></script> 
    <script src="js/respond.min.js"></script> 
    <![endif]--> 
</head> 

<body style="background-color:white"> 
    <img src="~/img/thrupps.png" style="width: 300px; height: 200px; margin: 0px 490px 0px 490px; " /> 
    <div class="col-md-12"> 

     <div class="login-wrap"> 
      @using (Html.BeginForm("Login", "Login", System.Web.Mvc.FormMethod.Post, new { @class = "login-form" })) 
      { 
       <p class="login-img"><i class="icon_lock_alt"></i></p> 
       <div> 
        @ViewBag.Name1 
       </div> 
       <div class="input-group"> 
        <span class="input-group-addon"><i class="icon_profile"></i></span> 
        @*@Html.TextBoxFor(a => a.LoginStudentNumber, "LoginStudentNumber", htmlAttributes: new { @class = "form-control" })*@ 
        @Html.TextBoxFor(a => a.LoginID, "LoginID", htmlAttributes: new { @class = "form-control", type = "number" }) 
       </div> 
       <div> 
        @ViewBag.Name2 
       </div> 
       <div class="input-group"> 
        <span class="input-group-addon"><i class="icon_key_alt"></i></span> 
        @Html.TextBoxFor(a => a.LoginPassword, "LoginPassword", htmlAttributes: new { @class = "form-control" }) 
       </div> 

       <input type="submit" id="button" class="btn btn-lg btn-success btn-block " value="Login" /> 

       @Html.ValidationSummary() 

      } 
     </div> 

    </div> 
</body> 
</html> 

Войти Модель:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 

namespace RMS.Models 
{ 
    public class Login 
    { 
     public int LoginID { get; set; } 
     [Required]   
     public string LoginStudentNumber { get; set; } 
     [Required]   
     public string LoginPassword { get; set; } 

    } 
} 

Примечание: Приведенный выше код работает только для меня, потому что я использую LoginID как мой логин ид. Любые предложения о том, как я могу использовать LoginStudentNumber в качестве моего идентификатора входа.

+0

Ваш вопрос непонятен! –

+0

Мои аполики. Я сразу приму это. –

ответ

3

Попробуйте заменить код в ваш Логин с этим:

RMS.Models.Login user = db.Logins.SingleOrDefault(t => t.LoginStudentNumber == model.LoginStudentNumber); 
2

метод EF find принимает первичный ключ для объекта в качестве параметра, и вы хотите, чтобы найти его логин. Вы можете использовать метод FirsOrDefault:

... 
RMS.Models.Login user = db.Logins.FirstOrDefault(l => l.LoginStudentNumber == model.LoginStudentNumber); 
Смежные вопросы