- What is
Html.Password
andHtml.PasswordFor
Helper Class? - What is the difference between Html.Password and Html.PasswordFor method?
- Define Html.password class
- How to Validate PasswordFor field?
- How to send data from Password to Controller
What is Html.Password Helper Class?
Html.Password Helper class generates password input fields in a web form that is used to ask and validate user password. The characters entered in password field is masked with special character * (asterisk) or whatever you set on it.
Difference between Html.Password and Html.PasswordFor Helper Class
Html.Password and Html.PasswordFor both generates the password input field but still, they are different in nature. Html.Password is a basic type, loosely typed Helper class that is not bounded with the model property. Html.PasswordFor is a strongly typed class that is bounded by the model property. It is always advisable to use Html.PasswordFor class because it is secure, error-free, check errors on compile time and easy to use.
Define
Html.PasswordHtml.Password(string name, object value, object htmlAttributes)Easy Example
@Html.Password("BasicPassword")
Html.PasswordFor
Html.PasswordFor(Expression<Func<dynamic,TProperty>> expression, object htmlAttributes)Easy Example
@Html.PasswordFor(m => m.ConfirmPassword)
Complete Programming Example
using System.ComponentModel.DataAnnotations; namespace HtmlHelperDemo.Models { public class UserModel { public int UserId { get; set; } public string UserName { get; set; } [Required(ErrorMessage ="Password is Required.")] public string Password { get; set; } [Required(ErrorMessage = "Confirmation Password is Required")] [Compare("Password", ErrorMessage = "Password Must Match")] public string ConfirmPassword { get; set; } } }
@using HtmlHelperDemo.Models @model UserModel <h1>Html.PasswordFor Example</h1> @using (Html.BeginForm("Index", "Home", FormMethod.Post)) { //Basic password Field Example @Html.Password("BasicPassword") <br /> //Strongly Typed Hidden Field @Html.PasswordFor(m => m.Password) @Html.ValidationMessageFor(m=>m.Password, "", new { @class = "error"}) <br /> @Html.PasswordFor(m => m.ConfirmPassword) @Html.ValidationMessageFor(m => m.ConfirmPassword, "", new { @class = "error" }) <br /><br /> <input id="Submit" type="submit" value="submit" /> } <hr /> <p><strong>Value:</strong> @ViewBag.BasicPassword</p><br /> <p><strong>Value:</strong> @ViewBag.StrongPassword</p><br />
using System.Web.Mvc; using HtmlHelperDemo.Models; namespace HtmlHelperDemo.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(FormCollection fc, UserModel um) { if (ModelState.IsValid) { ViewBag.BasicPassword = fc["BasicPassword"]; ViewBag.StrongPassword = um.ConfirmPassword; return View(um); } else { return View(); } } } }
Html Output
<form action="/" method="post"><input id="BasicPassword" name="BasicPassword" type="password" /> <br /> <input data-val="true" data-val-required="Password is Required." id="Password" name="Password" type="password" /><span class="field-validation-valid error" data-valmsg-for="Password" data-valmsg-replace="true"></span> <br /> <input class="input-validation-error" data-val="true" data-val-equalto="Password Must Match" data-val-equalto-other="*.Password" data-val-required="Confirmation Password is Required" id="ConfirmPassword" name="ConfirmPassword" type="password" /><span class="field-validation-error error" data-valmsg-for="ConfirmPassword" data-valmsg-replace="true">Password Must Match</span> <br /><br /> <input id="Submit" type="submit" value="submit" /> </form>
Summary
In this tutorial, you learned how to user Html.Password Helper class for generating Password input box in a web form. You also learned how to validate password field and send data back to the controller. In the next chapter, you will learn Html.Display Helper Class.