asp.net mvc Razor TextBox

时间:2013-04-01 14:44:45

标签: asp.net-mvc razor

如何检查在ASP.NET MVC @ Html.TextBox中输入的值并将其与数据库中的值进行比较?我想轻松登录,并希望查看文本框中输入的值是否与数据库中的值相同

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

我尝试过创建一个视图包,然后将它带到控制器,但它似乎没有用。

2 个答案:

答案 0 :(得分:3)

为此特定UI创建一个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);
}

现在,在我们的LoginViewModel强类型的登录视图(Login.cshtml)中,我们将使用TextBoxFor html辅助方法来呈现UserNamePassword字段的文本框。

@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();
}

答案 1 :(得分:0)

试试这样:

在Model类中定义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)

不要忘记包含jquery验证脚本。

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