ASP.NET MVC рдореЗрдВ рд╡реНрдпреВ рдореЙрдбрд▓ рдХрд╛ рдЖрдпреЛрдЬрди



рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреИрд╕реЗ "15 рдорд┐рдирдЯ рдореЗрдВ ASP.NET MVC рдкрд░ рд╡рд┐рдХреА рдмрдирд╛рдирд╛"ред рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдбреЗрдЯрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП VideData рдпрд╛ ViewBag рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред Html.TextBox() рдЬреИрд╕реЗ Html.TextBox() рддрд░реАрдХреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдлреЙрд░реНрдо рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд░реВрдкреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╕ рдкреИрд░рд╛рдореАрдЯрд░, рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдЦреБрдж рдХреЛ рдУрдЖрд░рдПрдо рд╕реЗ рдирд┐рдХрд╛рдпред

рдпрд╣ рдХрд┐рд╕реА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрджреНрднреБрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЬреАрд╡рди рдореЗрдВ рдХреЗрд╡рд▓ рдРрд╕реЗ "рд╡реАрдбрд┐рдпреЛ рд╕рдмрдХ" рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ Html.TextBoxFor(m=>..) рдЪрд╛рд╣рддреЗ рд╣реИрдВ, Html.TextBoxFor(m=>..) рдЬреИрд╕реЗ рдХрдбрд╝рд╛рдИ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдлреЙрд░реНрдо рд╕реЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рднреА рдореЙрдбрд▓ рд╕реБрд╕рдВрдЧрдд рд╣реИрдВред

рддреЛ, рдирд┐рдпрдо, рдпрджрд┐ рдЖрдк MVC рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


рдПрдХ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди _рд▓рд╛рдпрдЖрдЙрдЯ (рдорд╛рд╕реНрдЯрд░ рдкреГрд╖реНрдареЛрдВ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдПрдХ рджреГрд╢реНрдп рднреА рд╣реИ рдФрд░ рд╡реЗ рдЕрдкрдиреЗ рдореЙрдбрд▓ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛рдлреА рдЙрдЪрд┐рдд рд╣реИ - рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдпрд╣ рджреГрд╢реНрдп рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдмрд╛рдж рдореЗрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдкрдиреЗ _Layout.cshtml рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рдореЗрдВ SharedLayoutViewModel рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ, рдФрд░ рдмрд╛рдХреА рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдореЙрдбрд▓ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдВред рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╛ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ OnResultExecuting рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ, рдФрд░ рд╡рд╣рд╛рдВ рдХрд░реЗрдВред

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдореЙрдбрд▓реЛрдВ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛рдлреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рджрд┐рдЦрддрд╛ рд╣реИ:


рд╣рдо рдлреЙрд░реНрдо рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ


рдЖрдЗрдП рдЗрд╕ рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ, рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рджреГрд╢реНрдп рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо AccountRegisterViewModel рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ AccountRegisterViewModel :
@model AccountRegisterViewModel
< h2 >
Register </ h2 >
@using (Html.BeginForm())
{
@Html.ValidationSummary()
< label >
Name
@Html.TextBoxFor(m = > m.Form.Name)
</ label >
< label >
State
@Html.DropDownListFor(m = > m.Form.State, Model.StateSelectList)
</ label >
< input type ="submit" value ="Register me" />
}

ViewModels / рдЦрд╛рддрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреЗрдЯ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдФрд░ рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдпрд╣рд╛рдВ рдПрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреАрд╡рди рдореЗрдВ рдПрдХ рд╣реА рджреГрд╢реНрдп рдореЗрдВ рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ):
public class AccountRegisterViewModel : SharedLayoutViewModel<br/>
{ <br/>
public AccountRegisterForm Form { get ; set ; } <br/>
<br/>
public IEnumerable < SelectListItem > StateSelectList { get ; set ; } <br/>
}

рд╣рдорд╛рд░реЗ рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдореЗрдВ рдкреНрд░рдкрддреНрд░ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ DataAnnotations рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреА, рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐рд╕реА рджрд┐рди рднреА IValidatableObject рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
public class AccountRegisterForm<br/>
{ <br/>
[ Required ] <br/>
public string Name { get ; set ; } <br/>
<br/>
[ Required ] <br/>
public string State { get ; set ; } <br/>
}

рдЯреЛрдЧрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдЦреБрдж рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
[ HttpGet ] <br/>
public ActionResult Register ( ) <br/>
{ <br/>
var model = new AccountRegisterViewModel ( ) ; <br/>
<br/>
SetupRegisterViewModel ( model ) ; <br/>
return View ( model ) ; <br/>
} <br/>
<br/>
[ HttpPost ] <br/>
public ActionResult Register ( [ Bind ( Include = "Form" ) ] AccountRegisterViewModel model ) <br/>
{ <br/>
if ( ModelState. IsValid ) <br/>
{ <br/>
// save model.Form <br/>
<br/>
TempData [ "Message" ] = "Thank you for registering" ; <br/>
return RedirectToAction ( "Index" ) ; <br/>
} <br/>
<br/>
SetupRegisterViewModel ( model ) ; <br/>
return View ( model ) ; <br/>
} <br/>
<br/>
private void SetupRegisterViewModel ( AccountRegisterViewModel model ) <br/>
{ <br/>
model. StateSelectList = new SelectList ( new [ ] { string . Empty , "NY" , "VA" } ) ; <br/>
}


рд╡рд╣ рд╕рдм рд╣реИред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг ASP.NET MVC рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рди рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ред

рдкреАрдПрд╕ I рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдВрдХреЗрддрд┐рдХ рдирд╣реАрдВ рд╣реИред рдкрд╛рдардХ рдХреЗ рд╕рдордп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реНрд╡рд░реВрдкрдг рдХреЗ рдмрд┐рдирд╛ рджреЛ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In116298/


All Articles