рдпрд╣ ASP.Net MVC рд╕реАрд░реАрдЬрд╝ рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рдХрд╛ рднрд╛рдЧ 2 рд╣реИ
1. рдЕрдВрджрд░ jQuery рдХреЗ рдорд╛рдиреНрдп рдкреНрд▓рдЧрдЗрди рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ2. ASP.Net MVC рдореЗрдВ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди HTML рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛
3. ASP.Net MVC рдореЗрдВ рд╡рд┐рдиреАрдд jQuery рдХреЗ рдорд╛рдиреНрдп рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпредрд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреНрдпрд╛ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ:
- рд╡рд┐рдиреАрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЗрдбрд┐рдпрд╛
- рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░
- рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рдХреЛ рд╕рдордЭрдирд╛:
- рдЗрдирдкреБрдЯ рддрддреНрд╡, рдЙрдирдХреА рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдирд┐рдпрдо рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
- рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рдФрд░ рд╡реЗ рдХреИрд╕реЗ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рд╡рд┐рдиреАрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдореВрд▓ рд╡рд┐рдЪрд╛рд░
Microsoft рдиреЗ MVC рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд╣рд▓рд╛ рд╕рддреНрдпрд╛рдкрди рдореЙрдбреНрдпреВрд▓ рдкреЗрд╢ рдХрд┐рдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ, рдФрд░ ASP.Net MVC 3 рдореЗрдВ рдПрдХ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдзреБрдирд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдХрднреА-рдХрднреА рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдЪрдЯреАрдПрдордПрд▓ рдкреЗрдЬ рдХреЗ рдЕрдВрджрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╣рдо js рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдкреГрд╖реНрда рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рд╡рд┐рдиреАрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ HTML рдорд╛рд░реНрдХрдЕрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ред
рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ
рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдЦрдХ рд╣рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рднрд╛рд╖рд╛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╡рд┐рдиреАрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджрдХ)
рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ред
рдиреАрдЪреЗ MVC 2 рд╕рддреНрдпрд╛рдкрди рдФрд░ рд╡рд┐рдиреАрдд MVC 3 рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдореЙрдбрд▓ рдХреЛрдб рдФрд░ HTML рдорд╛рд░реНрдХрдЕрдк рд╣реИред
рд╣рдорд╛рд░рд╛ рдореЙрдбрд▓
C #
public class ValidationModel { [Required] public string FirstName { get; set; } [Required, StringLength(60)] public string LastName { get; set; } [Range(1, 130)] public int Age { get; set; } }
MVC 2 рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рд╣реЗрд▓реНрдкрд░ рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡
рдПрдЪрдЯреАрдПрдордПрд▓
<label for="FirstName">FirstName</label> <input id="FirstName" class="text-box single-line" type="text" name="FirstName" value="" /> <span id="FirstName_validationMessage" class="field-validation-valid"></span> <label for="LastName">LastName</label> <input id="LastName" class="text-box single-line" type="text" name="LastName" value="" /> <span id="LastName_validationMessage" class="field-validation-valid"></span> <label for="Age">Age</label> <input id="Age" class="text-box single-line" type="text" name="Age" value="" /> <span id="Age_validationMessage" class="field-validation-valid"></span> <script type="text/javascript">// <![CDATA[ if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; } window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"FirstName","ReplaceValidationMessageContents":true,"ValidationMessageId":"FirstName_validationMessage","ValidationRules":[{"ErrorMessage":"The FirstName field is required.","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"LastName","ReplaceValidationMessageContents":true,"ValidationMessageId":"LastName_validationMessage","ValidationRules":[{"ErrorMessage":"The LastName field is required.","ValidationParameters":{},"ValidationType":"required"},{"ErrorMessage":"The field LastName must be a string with a maximum length of 60.","ValidationParameters":{"max":60},"ValidationType":"length"}]},{"FieldName":"Age","ReplaceValidationMessageContents":true,"ValidationMessageId":"Age_validationMessage","ValidationRules":[{"ErrorMessage":"The field Age must be between 1 and 130.","ValidationParameters":{"min":1,"max":130},"ValidationType":"range"},{"ErrorMessage":"The Age field is required.","ValidationParameters":{},"ValidationType":"required"},{"ErrorMessage":"The field Age must be a number.","ValidationParameters":{},"ValidationType":"number"}]}],"FormId":"form0","ReplaceValidationSummary":true,"ValidationSummaryId":"validationSummary"}); // ]]></script>
MVC 3 рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рд╣реЗрд▓реНрдкрд░ рдФрд░ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡
рдПрдЪрдЯреАрдПрдордПрд▓
<label for="FirstName">FirstName</label> <input id="FirstName" class="text-box single-line" type="text" name="FirstName" value="" data-val="true" data-val-required="The FirstName field is required." /> <label for="LastName">LastName</label> <input id="LastName" class="text-box single-line" type="text" name="LastName" value="" data-val="true" data-val-length="The field LastName must be a string with a maximum length of 60." data-val-length-max="60" data-val-required="The LastName field is required." /> <label for="Age">Age</label> <input id="Age" class="text-box single-line" type="text" name="Age" value="" data-val="true" data-val-number="The field Age must be a number." data-val-range="The field Age must be between 1 and 130." data-val-range-max="130" data-val-range-min="1" data-val-required="The Age field is required." />
рдпрд╣ рдХреЛрдб
рдмреНрд░реИрдб рд╡рд┐рд▓реНрд╕рди рдХреЗ рд▓реЗрдЦ
"ASP.NET MVC 3 рдореЗрдВ рд╡рд┐рдиреАрдд рдЧреНрд░рд╛рд╣рдХ рд╕рддреНрдпрд╛рдкрди" рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
редрдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, HTML "рдЗрдирдкреБрдЯ" рддрддреНрд╡реЛрдВ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рдмрдбрд╝реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреГрд╖реНрда рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рд╕рддреНрдпрд╛рдкрди рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рд╣рдо MVC 3 рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди "рдЗрдирдкреБрдЯ" рддрддреНрд╡реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЙрдирдореЗрдВ рдЕрдзрд┐рдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╣реИред рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдбреЗрдЯрд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ- * рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рдХреЛ рд╕рдордЭрдирд╛
1. "рдЗрдирдкреБрдЯ" рддрддреНрд╡, рдЙрдирдХрд╛ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рддреЛ, рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ "рдбреЗрдЯрд╛- *" рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
MVC рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ "рдбреЗрдЯрд╛- *" рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдмрдирд╛рддрд╛ рд╣реИред
jquery.validate.unobtrusive рдирд┐рдпрдореЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкрде рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрди рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ "рдорд╛рдиреНрдп ()" рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдПрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдирд┐рдпрдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдЧрд╛ред
рдХрд┐рд╕реА рднреА HTML рддрддреНрд╡ рдХреЗ рд╡рд┐рдиреАрдд рдирд┐рдпрдо рдХреЗ рддреАрди рднрд╛рдЧ рд╣реИрдВ:
- data-val = "true" рд╕рд┐рд░реНрдл рдПрдХ рдзреНрд╡рдЬ рд╣реИ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИред
- data-val-rulename = "рд╕рдВрджреЗрд╢" - рджреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛-рд╡реИрд▓-рд░реВрд▓реЗрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд┐рдпрдо рдХреЗ рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рдХрд╛ рдкрд╛рда рд╕рдВрджреЗрд╢ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдбреЗрдЯрд╛-рд╡реИрд▓- rulename-extravalues тАЛтАЛ= "рдорд╛рди" рд╕рддреНрдпрд╛рдкрди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдПред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реЗрдгреА рдХреА "рд╢реНрд░реЗрдгреА" рдХреЛ рдорд╛рдиреНрдп рдХрд░рддреЗ рд╕рдордп рдЬрдм рдореВрд▓реНрдп рдХреБрдЫ рдореВрд▓реНрдп рд╕реЗ рдХрдо рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)
рдЙрддреНрдкрдиреНрди рдЗрдирдкреБрдЯ рддрддреНрд╡ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ- * рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБред
<input id="Name" class="ignore" type="text" name="Name" value="" data-val="true" data-val-required="*" data-val-atleastonerequired="Enter at least Name, Email or Lastname" data-val-atleastonerequired-attributes="Email,LName" />
рдПрдХ рддрддреНрд╡ рдкрд░ рджреЛ рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ "рдЖрд╡рд╢реНрдпрдХ" рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╣реИ, рдЬрд┐рд╕реЗ "рдПрдЯрд▓рд╕реНрдЯреЗрд░реЛрдирдХреНрд╡рд╛рдпрд░реНрдб" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдИ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ "рд╕рдмрдорд┐рдЯ рдлрд╝реЙрд░реНрдо" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ "*" рдПрдХ рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "atleastonerequired" рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
2. рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рдФрд░ рд╡реЗ рдХреИрд╕реЗ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
<input id="FirstName" class="text-box single-line" type="text" name="FirstName" value="" data-val="true" data-val-required="The FirstName field is required." /> <span data-valmsg-replace="true" data-valmsg-for="Name" class="field-validation-valid help-inline" />
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рджреЛ "рдбреЗрдЯрд╛- *" рддрддреНрд╡ рд╣реИрдВ
- "рдбреЗрдЯрд╛-рд╡рд╛рд▓реНрдореНрд╕рдЧ-рдлреЙрд░" "рдЗрдирдкреБрдЯ" рддрддреНрд╡ рдХреЗ "рдирд╛рдо" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдореВрд▓реНрдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╣реЛрддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рддрддреНрд╡ рдФрд░ рдХрдВрдЯреЗрдирд░ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдлреЙрд░реНрдо рдЯреИрдЧ рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
- "рдбреЗрдЯрд╛-рд╡реИрд▓рдореНрд╕рдЧ-рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ" рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рд╣реИред рд╕рд╣реА рдФрд░ рдЧрд▓рдд рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рдпрджрд┐ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рдЧрд▓рдд рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд░рдВрддрд░ рд╣реЛрдЧрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдмрджрд▓реЗрдЧреА, рдХреЗрд╡рд▓ "рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ" рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ рдорд╛рдиреНрдп "рд╕реЗ" рдЕрдорд╛рдиреНрдп "ред
рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ "рд╡рд░реНрдЧ" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдорд╛рди рдореЗрдВ "рдлрд╝реАрд▓реНрдб-рд╕рддреНрдпрд╛рдкрди-рддреНрд░реБрдЯрд┐" рд╣реЛрдЧреА, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ "рдлрд╝реАрд▓реНрдб-рд╕рддреНрдпрд╛рдкрди-рд╡реИрдз"ред
рдирджреАрдо рдЦреЗрдбрд░ рдХреЗ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж
"Asp.net LVVC рдореЗрдВ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди Html рдХреЛ рд╕рдордЭреЗрдВ"рдЕрджреНрдпрддрди режрем/режрез/резрей: рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдиреНрдп рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛