ASP.Net MVC рдореЗрдВ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди HTML рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛

рдпрд╣ 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 рддрддреНрд╡ рдХреЗ рд╡рд┐рдиреАрдд рдирд┐рдпрдо рдХреЗ рддреАрди рднрд╛рдЧ рд╣реИрдВ:



рдЙрддреНрдкрдиреНрди рдЗрдирдкреБрдЯ рддрддреНрд╡ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ- * рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБред

 <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. рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рдФрд░ рд╡реЗ рдХреИрд╕реЗ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

 <!-- Required input using unobtrusive validation --> <input id="FirstName" class="text-box single-line" type="text" name="FirstName" value="" data-val="true" data-val-required="The FirstName field is required." /> <!-- The input's validation message placeholder --> <span data-valmsg-replace="true" data-valmsg-for="Name" class="field-validation-valid help-inline" /> 

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рджреЛ "рдбреЗрдЯрд╛- *" рддрддреНрд╡ рд╣реИрдВ



рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ "рд╡рд░реНрдЧ" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдорд╛рди рдореЗрдВ "рдлрд╝реАрд▓реНрдб-рд╕рддреНрдпрд╛рдкрди-рддреНрд░реБрдЯрд┐" рд╣реЛрдЧреА, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ "рдлрд╝реАрд▓реНрдб-рд╕рддреНрдпрд╛рдкрди-рд╡реИрдз"ред

рдирджреАрдо рдЦреЗрдбрд░ рдХреЗ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж "Asp.net LVVC рдореЗрдВ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди Html рдХреЛ рд╕рдордЭреЗрдВ"

рдЕрджреНрдпрддрди режрем/режрез/резрей: рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдиреНрдп рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛

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


All Articles