Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Регистрация
Сделаем форму для регистрации пользователя. При регистрации, пользователь должен распознать капчу и повторить ввод пароля. Но начнем без этого. Создадим метод Register в контроллере UserController и View. public ActionResult Register() { var newUser = new User(); return View(newUser); } Создаем и передаем во View новый объект User. Так как полей у нас пока только два, для заполнения создаем View: @using (Html.BeginForm(" Register", " User", FormMethod.Post, new { @class = " form-horizontal" })) { < fieldset> < div class=" control-group" > < label class=" control-label" for=" Email" > < /label> < div class=" controls" > @Html.ValidationMessage(" Email") @Html.TextBox(" Email", Model.Email) < /div> < /div> < div class=" control-group" > < label class=" control-label" for=" FirstName" > Password < /label> < div class=" controls" > @Html.ValidationMessage(" Password") @Html.Password(" Password", Model.Password) < /div> < /div> < div class=" form-actions" > < button type=" submit" class=" btn btn-primary" > Register < /button> @Html.ActionLink(" Cancel", " Index", null, null, new { @class = " btn" }) < /div> < /fieldset> }
Все эти дивы дивные, fieldset и button’ы сделаны по подобию, как это описано в фреймворке bootstrap (далее будем изучать). Изучим основные Html-вставки: Html.BeginForm(" Register", " User", FormMethod.Post, new { @class = " form-horizontal" }) - формирует тег < form action=”/User/Register” method=”post” class=”form-horizontal”> и закрывает его после вызова Dispose() (закрытие кавычек using() {}) @Html.TextBox(" Email", Model.Email) - формирует тег < input type=”text” name=”Email” value=”@Model.Email”> (т.е. в значение тега записывается значение Email переданного объекта) @Html.ValidationMessage(" Password") - выводит тег ошибки если такая есть @Html.Password(" Password", Model.Password) - выводит тег < input type=”password” name=”Password” value=”@Model.Password”> После нажатия на кнопку Register идет Http-запрос типа POST (так как FormMethod.Post и передает данные Email=& Password=. Создадим метод Register, принимающий в качестве параметра тип User, и пометим его атрибутом HttpPost, а предыдущий — атрибутом HttpGet. Контроллер различает, какой из типов запроса сейчас происходит и перенаправляет на тот, который необходим: [HttpGet] public ActionResult Register() { var newUser = new User(); return View(newUser); }
[HttpPost] public ActionResult Register(User user) { return View(user); } Сделаем точку останова на втором методе Register и проверим, какой объект приходит к нам: Видим, что поля Email и Password заполнены, остальные остались нулевыми или по умолчанию (default). Так как мы должны принять еще 2 поля (повтор пароля и капчу), то добавим эти поля в наш User partial class: public partial class User { public static string GetActivateUrl() { return Guid.NewGuid().ToString(" N"); }
public string ConfirmPassword { get; set; } public string Captcha { get; set; } } Добавим поля во View: < div class=" control-group" > < label class=" control-label" for=" FirstName" > Confirm Password < /label> < div class=" controls" > @Html.ValidationMessage(" ConfirmPassword") @Html.Password(" ConfirmPassword", Model.ConfirmPassword) < /div> < /div> < div class=" control-group" > < label class=" control-label" for=" FirstName" > Captcha < /label> < /div> < div class=" control-group" > < label class=" control-label" for=" FirstName" > Тут картинка 1234 < /label> < div class=" controls" > @Html.ValidationMessage(" Captcha") @Html.TextBox(" Captcha", Model.Captcha) < /div> < /div> Капчу пока не будем делать, просто она будет равна 1234.
|