Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Регистрация






Сделаем форму для регистрации пользователя. При регистрации, пользователь должен распознать капчу и повторить ввод пароля. Но начнем без этого. Создадим метод 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" >

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.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.