2013-04-01 5 views
0

Как вы можете проверить значение, введенное в ASP.NET MVC @ Html.TextBox, и сравнить его со значением в базе данных? Я хочу, чтобы сделать легкий вход, и вы хотите, чтобы увидеть, если значение, которое было введено в текстовом поле такое же, как и в базе данныхasp.net mvc Razor TextBox

<tr><td>Username</td><td>:</td><td>@Html.TextBox("username", new { @value = ViewBag.username })</td></tr> 

Я попытался вещи, как создание viewbag, а затем принимать его к контроллер, но он, похоже, не работает.

+0

Вы попробовали что-нибудь? Вы искали его? –

+0

Я пробовал разные вещи, и да, я искал его, но без везения, возможно, мои поисковые способности сосут. – Conceptual

+0

вы могли бы опубликовать то, что вы пробовали. Я имею в виду код –

ответ

3

Создать ViewModel (простой класс) для этого конкретного интерфейса

public class LoginViewModel 
{ 
    [Required] 
    public string UserName { set;get;} 

    [Required] 
    [DataType(DataType.Password)] 
    public string Password { set;get;} 
} 

Теперь в ваших GET действия, создать объект этого класса и отправить ваш взгляд.

public ActionResult Login() 
{ 
    var vm=new LoginViewMode(); 
    return View(vm); 
} 

Теперь на наш взгляд входа (Login.cshtml), который сильно типизированных нашим LoginViewModel, мы будем использовать метод TextBoxFor HTML помощник для визуализации текстовых полей для наших UserName и Password полей.

@model LoginViewModel 
@using(Html.Beginform()) 
{ 
    UserName 
    @Html.TextBoxFor(x=>x.UserName); 

    Password 
    @Html.TextBoxFor(x=>x.Password) 
    <input type="submit" /> 
} 

Это будет оказывать такую ​​форму, которая имеет значение атрибута действий установлено значение /YourCotnroller/Login. Теперь мы должны иметь метод HttpPost действий для обработки формы проводки

[HttpPost] 
public ActionResult Login(LoginViewModel model) 
{ 
    if(ModelState.IsValid) 
    { 
    string uName=model.UserName; 
    string pass=model.Password. 

    //Now you can use the above variables to check it against your dbrecords. 
    // If the username & password matches, you can redirect the user to 
    // another page using RedirecToAction method 
    // return RedirecToAction("UserDashboard") 

    } 
    return View(model); 
} 
public ActionResult UserDashboard() 
{ 
    //make sure you check whether user is logged in or not 
    // to deny direct access without login 
    return View(); 
} 
+0

Вы получаете сообщение об ошибке при доступе к вашему методу GET? – Shyju

+0

Извините, я был немым, я забыл, что это действие перегрузки, но что вы имеете в виду под «// Теперь вы можете использовать вышеуказанные переменные, чтобы проверить его на ваши dbrecords.», Потому что я не могу походить как entity.login. имя пользователя в моей базе данных. – Conceptual

+0

@ user1841216: у вас введены значения имени пользователя/пароля, введенные в переменные. теперь вам нужно поговорить со своим уровнем БД, чтобы получить данные и сравнить их по мере необходимости. – Shyju

0

Попробуйте так:

Определение свойств модели в классе Model:

public class Login{ 

     [Required] 
     [Remote("IsUserNameAvaliable", "Home")] 
     public string username{get;set;} 

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

Атрибут Remote что будет найден метод/действие с IsUserNameAvaliable в имени контроллера Home.

Удаленные серверы атрибутов для этой цели в MVC.

public JsonResult IsUserNameAvaliable(string username) 
     { 
      //Check if there are any matching records for the username name provided 
      if (_dbEntity.Users.Any(c => c.UserName == username)) 
      { 
       //If there are any matching records found 

       return Json(true, JsonRequestBehavior.AllowGet); 
      } 
      else 
      { 
       string userID = String.Format(CultureInfo.InvariantCulture, 
           "{0} is not available.", username); 

       return Json(userID, JsonRequestBehavior.AllowGet); 
      } 

     } 

Теперь на ваш взгляд, сильно введите текстовое поле

@model Application.Models.Login 

@Html.TextBoxFor(m=>m.username) 
@Html.ValidationMessageFor(m=>m.username) 

Donot забыть включить сценарии проверки JQuery.

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryval") 
+0

Спасибо, но я не имел в виду это так, мне не нужен результат JSon, я просто хочу проверить, совпадает ли значение текстового поля с базой данных, спасибо хотя, D – Conceptual

+0

да, вы можете проверить и сообщить, доступен ли пользователь или нет –