SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Validations in MVC,[object Object],Eyal Vardi,[object Object],CEO E4D Solutions LTDMicrosoft MVP Visual C#blog: www.eVardi.com,[object Object]
Agenda,[object Object],Data Annotations Validation ,[object Object],Self Validation Models,[object Object],Custom Validation,[object Object],Entity Level Validation,[object Object],Client-Side Validation,[object Object],Remote Validation,[object Object]
Validation Scenario (WWWH),[object Object],When to validate?,[object Object],During data input,[object Object],On submitting data,[object Object],After submission,[object Object],What to validate?,[object Object],Property,[object Object],Entity,[object Object],Domain Operation,[object Object],Where to validate?,[object Object],Server Only,[object Object],Client + Server,[object Object],How do we write logic?,[object Object],Attributes,[object Object],Add code in operation,[object Object],Custom validation class,[object Object]
Model Data Annotations,[object Object],Specify validation for individual fields in the data model.,[object Object],System.ComponentModel.DataAnnotations,[object Object],Provide both client and server validation checks with no additional coding required by you. ,[object Object],public class ProductMD{    [StringLength(50), Required]    public object Name { get; set; }                            [Range(0, 9999)]    public object Weight { get; set; }},[object Object]
Metadata Classes,[object Object],The MetadataTypeAttributeattribute enables you to associate a class with a data-model partial class.,[object Object],[MetadataTypeAttribute( typeof( Employee.EmployeeMetadata ) )],[object Object],publicpartialclassEmployee,[object Object],},[object Object],internalsealedclassEmployeeMetadata,[object Object],       },[object Object],        [StringLength(60)],[object Object],        [RoundtripOriginal],[object Object],public string AddressLine { get; set; },[object Object],    },[object Object],},[object Object]
Server Validation,[object Object],public ActionResult Edit( Contact contact ){    if (ModelState.IsValid)     {         // The model Valid.    }    else    {        ModelState.AddModelError( "*", "contract not valid" );    }    return View(contact);,[object Object],},[object Object],Validate Model,[object Object]
Server Validation,[object Object],[AcceptVerbs(HttpVerbs.Post)]public ActionResult Edit( int id, FormCollection collection ){   Product prd = GetProduct(id);   if ( ! TryUpdateModel( prd ) )   {      return View(prd);   }               // Persist changes back to database   _db.SaveChanges();   // Perform HTTP redirect to details page for the saved Dinner   return RedirectToAction("Details", new { id = prd.ProductID });},[object Object],Validate Product,[object Object]
Validation Attributes,[object Object],Metadata Validation Attributes:,[object Object],[Required],[object Object],[Exclude],[object Object],[DataType],[object Object],[Range],[object Object],[StringLength(60)],[object Object],[RegularExpression],[object Object],[AllowHtml],[object Object],[Compare],[object Object],[MetadataTypeAttribute( typeof( Employee.EmployeeMetadata ) )],[object Object],publicpartialclassEmployee,[object Object],},[object Object],internalsealedclassEmployeeMetadata,[object Object],       },[object Object],        [StringLength(60)],[object Object],        [RoundtripOriginal],[object Object],public string AddressLine { get; set; },[object Object],    },[object Object],},[object Object]
Self Validation Models,[object Object],Validation Order:,[object Object],Property attributes,[object Object],Class attributes,[object Object],Validate interface,[object Object],If you have any DataAnnotations attributes on your properties that fail then your Validate implementation will not be called.,[object Object]
Self Validation Models,[object Object],public class UserModel : IValidatableObject{   public int Age { get; set; }   public IEnumerable<ValidationResult> Validate( ValidationContext vc )   {       if( Age < 18 )       {            yield return                new ValidationResult(                      "User age should be higher then 18",                       new string[] { "Age" });       }   }},[object Object]
CustomValidation Attribute,[object Object],The custom class must:,[object Object],Public, static method,[object Object],At lest 1 parameter,[object Object],Returns ValidationResult,[object Object],public class MyValidator,[object Object],{,[object Object],   public static ValidationResultValidationAddress(short value,ValidationContextcontext)  ,[object Object],{,[object Object],ValidationResultresult =  ,[object Object],       		( value >= 0.0 && value <= 100.0 ) ?   ,[object Object],ValidationResult.Success:,[object Object],         		    new ValidationResult("Is out of range");,[object Object],      return result; ,[object Object],   }  ,[object Object], } ,[object Object]
CustomValidation Attribute,[object Object],[MetadataTypeAttribute( typeof( Employee.EmployeeMetadata ) )],[object Object],publicpartialclassEmployee,[object Object],},[object Object],internalsealedclassEmployeeMetadata,[object Object],       },[object Object],        [CustomValidation( typeof(MyValidator) , "ValidationAddress")],[object Object],public short AddressNum { get; set; },[object Object],    },[object Object],},[object Object]
Custom Validation Attribute,[object Object],Derived from ValidationAttributein order to have library of custom validation attributes.,[object Object],public class EvenNumberAttribute : ValidationAttribute{   protected override ValidationResult IsValid( object  value ,           ValidationContext  validationContext )   {       return          ( (short) value % 2 == 0 ? ValidationResult.Success : new ValidationResult("...") );   },[object Object],},[object Object]
Client-Side Validation,[object Object]
Client-Side Validation,[object Object],<script src="@Url.Content("~/jquery1.4.4.min.js")"  type="text/javascript" /><script src="@Url.Content("~/jquery.validate.min.js")" type="text/javascript"/>,[object Object],<script src="@Url.Content("~/jquery.validate.unobtrusive.min.js")" ... />,[object Object],@HtmlHelper.EnableClientValidation = true; // By default define in config file.,[object Object],@using (Html.BeginForm()) ,[object Object],{    @Html.ValidationSummary(true)    <fieldset>        <legend>TimeCard</legend>        <div class="editor-label">            @Html.LabelFor(model => model.Username)        </div>        <div class="editor-field">            @Html.EditorFor(model => model.Username)            @Html.ValidationMessageFor(model => model.Username)        </div>,[object Object],    </fieldset>,[object Object],},[object Object]
public class Contact{   [StringLength(4)]   public string Name { get; set; }},[object Object],Model,[object Object],<div class="editor-field">    @Html.TextBoxFor(m => m.Name)    @Html.ValidationMessageFor(m => m.Name)</div>,[object Object],View,[object Object],<div class="editor-field">  <input name="Name" id="Name"type="text" value=""         data-val="true | false"          data-val-length="Error Message"          data-val-length-max="4"            />  <span class="field-validation-valid"          data-valmsg-for="Name"          data-valmsg-replace="true | false" /></div>,[object Object],<div class="editor-field">  <input name="Name" id="Name"type="text" value=""         ,[object Object],         ,[object Object],                                            />  <span class="field-validation-valid"          ,[object Object],                                            /></div>,[object Object],<div class="editor-field">  <input name="Name" id="Name"type="text" value=""         data-val="true | false"          data-val-length="Error Message"          data-val-length-max="4"            />  <span class="field-validation-valid"          ,[object Object],                                            /></div>,[object Object],HTML,[object Object],Client Attribute,[object Object]
IClientValidatable,[object Object],Enables MVC to discover at run time whether a validator has support for client validation.,[object Object],public sealed class DateRangeAttribute : ValidationAttributeIClientValidatable{    public IEnumerable<ModelClientValidationRule>             GetClientValidationRules( ModelMetadata metadata, ControllerContext context)   {       return new[]{ ,[object Object],                    new ModelClientValidationRangeDateRule(,[object Object],                    FormatErrorMessage( metadata.GetDisplayName() ),                         _minDate,,[object Object],                     _maxDate) };   },[object Object],},[object Object]
public class ModelClientValidationRangeDateRule : ModelClientValidationRule,[object Object],{         ,[object Object], public ModelClientValidationRangeDateRule(,[object Object],        string errorMessage, DateTime minValue, DateTime maxValue),[object Object],  {             ,[object Object],ErrorMessage                = errorMessage;,[object Object],ValidationType              = "rangedate";,[object Object],ValidationParameters["min"] = minValue.ToString("yyyy/MM/dd"); ,[object Object],ValidationParameters["max"] = maxValue.ToString("yyyy/MM/dd");,[object Object],  }     ,[object Object],},[object Object],<input id="Foo_Date"class="date" name="Foo.Date" type="text" value="…",[object Object],  data-val="true",[object Object],  data-val-rangedate="Error Message"    ,[object Object],  data-val-rangedate-max="2010/12/20"     ,[object Object],  data-val-rangedate-min="2010/12/02"     ,[object Object],  data-val-required="The Date field is required." />   ,[object Object],  <span class="field-validation-valid"        ,[object Object],    data-valmsg-for="Foo.Date"           ,[object Object], data-valmsg-replace="true" />,[object Object]
JQuery Date Range Validation,[object Object],(function ($) {,[object Object],   $.validator.addMethod('rangeDate', function (value, element, param){,[object Object],if(!value) returntrue; ,[object Object],try{ vardateValue = $.datepicker.parseDate("dd/mm/yy", value); },[object Object],catch(e) { return false; },[object Object],returnparam.min <= dateValue && dateValue <= param.max;,[object Object],        });,[object Object],    // The adapter to support ASP.NET MVC unobtrusive validation,[object Object],    $.validator.unobtrusive.adapters.add('rangedate', ['min', 'max'], function(options) {,[object Object],varparams = {,[object Object],            min: $.datepicker.parseDate("yy/mm/dd", options.params.min),,[object Object],            max: $.datepicker.parseDate("yy/mm/dd", options.params.max),[object Object],        };,[object Object],options.rules['rangeDate'] = params;,[object Object],if (options.message) {,[object Object],options.messages['rangeDate'] = options.message;,[object Object],        },[object Object],    });,[object Object],} (jQuery));,[object Object]
JQuery Date Range Validation,[object Object],$(document).ready( function () ,[object Object],{     ,[object Object],  function getDateYymmdd(value),[object Object],   {        ,[object Object], if (value == null),[object Object],            return null;,[object Object],     return $.datepicker.parseDate("yy/mm/dd", value); ,[object Object],    },[object Object],   ,[object Object],   $('.date').each( function (),[object Object],   {,[object Object],        var minDate = getDateYymmdd( $(this).data("val-rangedate-min"));,[object Object],        var maxDate = getDateYymmdd( $(this).data("val-rangedate-max"));,[object Object],         $(this).datepicker(,[object Object],                {             ,[object Object],dateFormat: "dd/mm/yy", ,[object Object],              minDate   : minDate,,[object Object],            maxDate   : maxDate,[object Object],                 });    ,[object Object],    });,[object Object],});,[object Object]
IClientValidatable,[object Object]
Remote Validator,[object Object],Remote Validator,[object Object],JQuery,[object Object],publicclassContact,[object Object],{,[object Object],   [Remote("UserNameAvailable", "My")],[object Object],publicstringUserName { get; set; },[object Object],},[object Object],Model,[object Object],public JsonResult UserNameAvailable(string username),[object Object], {    if (MyRepository.UserNameExists(username))    ...                  return Json( “message” , JsonRequestBehavior.AllowGet);},[object Object],MyController,[object Object],<input ...           data-val-remote="UserName is invalid."    data-val-remote-additionalfields="*.UserName"    data-val-remote-url="/Validation/IsUID_Available"  />,[object Object]
Remote Validator,[object Object]
Summary,[object Object],New validation features,[object Object],Data annotations & ValidationContext,[object Object],Self validation, IValidatebleObject,[object Object],Client validation,[object Object],Remote validation,[object Object],Unobtrusive client validation,[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial之宇 趙
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC Presentationivpol
 
Web Development and Web Development technologies - Temitayo Fadojutimi
Web Development and Web Development technologies - Temitayo FadojutimiWeb Development and Web Development technologies - Temitayo Fadojutimi
Web Development and Web Development technologies - Temitayo FadojutimiTemitayo Fadojutimi
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVCDzmitry Naskou
 
java Servlet technology
java Servlet technologyjava Servlet technology
java Servlet technologyTanmoy Barman
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch APIXcat Liu
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...Edureka!
 
Authenticating Angular Apps with JWT
Authenticating Angular Apps with JWTAuthenticating Angular Apps with JWT
Authenticating Angular Apps with JWTJennifer Estrada
 
Angular 2 Essential Training
Angular 2 Essential Training Angular 2 Essential Training
Angular 2 Essential Training Patrick Schroeder
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsVikash Singh
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and DjangoMichael Pirnat
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Edureka!
 

Was ist angesagt? (20)

Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial
 
React js
React jsReact js
React js
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC Presentation
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Web Development and Web Development technologies - Temitayo Fadojutimi
Web Development and Web Development technologies - Temitayo FadojutimiWeb Development and Web Development technologies - Temitayo Fadojutimi
Web Development and Web Development technologies - Temitayo Fadojutimi
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVC
 
Express js
Express jsExpress js
Express js
 
Rest API
Rest APIRest API
Rest API
 
java Servlet technology
java Servlet technologyjava Servlet technology
java Servlet technology
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch API
 
Graphql
GraphqlGraphql
Graphql
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
 
Authenticating Angular Apps with JWT
Authenticating Angular Apps with JWTAuthenticating Angular Apps with JWT
Authenticating Angular Apps with JWT
 
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
 
Angular 2 Essential Training
Angular 2 Essential Training Angular 2 Essential Training
Angular 2 Essential Training
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Expressjs
ExpressjsExpressjs
Expressjs
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
 
Angularjs PPT
Angularjs PPTAngularjs PPT
Angularjs PPT
 

Andere mochten auch

MobConf - session on C# async-await on 18june2016 at Kochi
MobConf - session on C# async-await on 18june2016 at KochiMobConf - session on C# async-await on 18june2016 at Kochi
MobConf - session on C# async-await on 18june2016 at KochiPraveen Nair
 
Validation controls in asp
Validation controls in aspValidation controls in asp
Validation controls in aspShishir Jain
 
Asp.NET Validation controls
Asp.NET Validation controlsAsp.NET Validation controls
Asp.NET Validation controlsGuddu gupta
 
Client-side MVC with Backbone.js
Client-side MVC with Backbone.js Client-side MVC with Backbone.js
Client-side MVC with Backbone.js iloveigloo
 
Validation controls ppt
Validation controls pptValidation controls ppt
Validation controls pptIblesoft
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentationBhavin Shah
 

Andere mochten auch (6)

MobConf - session on C# async-await on 18june2016 at Kochi
MobConf - session on C# async-await on 18june2016 at KochiMobConf - session on C# async-await on 18june2016 at Kochi
MobConf - session on C# async-await on 18june2016 at Kochi
 
Validation controls in asp
Validation controls in aspValidation controls in asp
Validation controls in asp
 
Asp.NET Validation controls
Asp.NET Validation controlsAsp.NET Validation controls
Asp.NET Validation controls
 
Client-side MVC with Backbone.js
Client-side MVC with Backbone.js Client-side MVC with Backbone.js
Client-side MVC with Backbone.js
 
Validation controls ppt
Validation controls pptValidation controls ppt
Validation controls ppt
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentation
 

Ähnlich wie ASP.NET MVC 3.0 Validation

Asp.net mvc training
Asp.net mvc trainingAsp.net mvc training
Asp.net mvc trainingicubesystem
 
Building the an End-to-End ASP.NET MVC 4, Entity Framework, HTML5, jQuery app...
Building the an End-to-End ASP.NET MVC 4, Entity Framework, HTML5, jQuery app...Building the an End-to-End ASP.NET MVC 4, Entity Framework, HTML5, jQuery app...
Building the an End-to-End ASP.NET MVC 4, Entity Framework, HTML5, jQuery app...Dan Wahlin
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5Tieturi Oy
 
Java Server Faces (JSF) - advanced
Java Server Faces (JSF) - advancedJava Server Faces (JSF) - advanced
Java Server Faces (JSF) - advancedBG Java EE Course
 
Introduction to Spring MVC
Introduction to Spring MVCIntroduction to Spring MVC
Introduction to Spring MVCRichard Paul
 
AuthN deep.dive—ASP.NET Authentication Internals.pdf
AuthN deep.dive—ASP.NET Authentication Internals.pdfAuthN deep.dive—ASP.NET Authentication Internals.pdf
AuthN deep.dive—ASP.NET Authentication Internals.pdfondrejl1
 
JavaEE Security
JavaEE SecurityJavaEE Security
JavaEE SecurityAlex Kim
 
Jug Guice Presentation
Jug Guice PresentationJug Guice Presentation
Jug Guice PresentationDmitry Buzdin
 
Web topic 22 validation on web forms
Web topic 22  validation on web formsWeb topic 22  validation on web forms
Web topic 22 validation on web formsCK Yang
 
Apex Testing and Best Practices
Apex Testing and Best PracticesApex Testing and Best Practices
Apex Testing and Best PracticesJitendra Zaa
 
Spring 3: What's New
Spring 3: What's NewSpring 3: What's New
Spring 3: What's NewTed Pennings
 
My journey to use a validation framework
My journey to use a validation frameworkMy journey to use a validation framework
My journey to use a validation frameworksaqibsarwar
 
Creating a Facebook Clone - Part XXV - Transcript.pdf
Creating a Facebook Clone - Part XXV - Transcript.pdfCreating a Facebook Clone - Part XXV - Transcript.pdf
Creating a Facebook Clone - Part XXV - Transcript.pdfShaiAlmog1
 
Resiliency & Security_Ballerina Day CMB 2018
Resiliency & Security_Ballerina Day CMB 2018  Resiliency & Security_Ballerina Day CMB 2018
Resiliency & Security_Ballerina Day CMB 2018 Ballerina
 
Sfdc tournyc14 salesforceintegrationwithgoogledoubleclick__final_20141119
Sfdc tournyc14 salesforceintegrationwithgoogledoubleclick__final_20141119Sfdc tournyc14 salesforceintegrationwithgoogledoubleclick__final_20141119
Sfdc tournyc14 salesforceintegrationwithgoogledoubleclick__final_20141119Ami Assayag
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIhabib_786
 

Ähnlich wie ASP.NET MVC 3.0 Validation (20)

Domain Driven Design 101
Domain Driven Design 101Domain Driven Design 101
Domain Driven Design 101
 
Asp.NET MVC
Asp.NET MVCAsp.NET MVC
Asp.NET MVC
 
Asp.net mvc training
Asp.net mvc trainingAsp.net mvc training
Asp.net mvc training
 
Building the an End-to-End ASP.NET MVC 4, Entity Framework, HTML5, jQuery app...
Building the an End-to-End ASP.NET MVC 4, Entity Framework, HTML5, jQuery app...Building the an End-to-End ASP.NET MVC 4, Entity Framework, HTML5, jQuery app...
Building the an End-to-End ASP.NET MVC 4, Entity Framework, HTML5, jQuery app...
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
 
Java Server Faces (JSF) - advanced
Java Server Faces (JSF) - advancedJava Server Faces (JSF) - advanced
Java Server Faces (JSF) - advanced
 
Introduction to Spring MVC
Introduction to Spring MVCIntroduction to Spring MVC
Introduction to Spring MVC
 
Jsr 303
Jsr 303Jsr 303
Jsr 303
 
AuthN deep.dive—ASP.NET Authentication Internals.pdf
AuthN deep.dive—ASP.NET Authentication Internals.pdfAuthN deep.dive—ASP.NET Authentication Internals.pdf
AuthN deep.dive—ASP.NET Authentication Internals.pdf
 
JavaEE Security
JavaEE SecurityJavaEE Security
JavaEE Security
 
Jug Guice Presentation
Jug Guice PresentationJug Guice Presentation
Jug Guice Presentation
 
Web topic 22 validation on web forms
Web topic 22  validation on web formsWeb topic 22  validation on web forms
Web topic 22 validation on web forms
 
Apex Testing and Best Practices
Apex Testing and Best PracticesApex Testing and Best Practices
Apex Testing and Best Practices
 
Spring 3: What's New
Spring 3: What's NewSpring 3: What's New
Spring 3: What's New
 
My journey to use a validation framework
My journey to use a validation frameworkMy journey to use a validation framework
My journey to use a validation framework
 
Creating a Facebook Clone - Part XXV - Transcript.pdf
Creating a Facebook Clone - Part XXV - Transcript.pdfCreating a Facebook Clone - Part XXV - Transcript.pdf
Creating a Facebook Clone - Part XXV - Transcript.pdf
 
Resiliency & Security_Ballerina Day CMB 2018
Resiliency & Security_Ballerina Day CMB 2018  Resiliency & Security_Ballerina Day CMB 2018
Resiliency & Security_Ballerina Day CMB 2018
 
Sfdc tournyc14 salesforceintegrationwithgoogledoubleclick__final_20141119
Sfdc tournyc14 salesforceintegrationwithgoogledoubleclick__final_20141119Sfdc tournyc14 salesforceintegrationwithgoogledoubleclick__final_20141119
Sfdc tournyc14 salesforceintegrationwithgoogledoubleclick__final_20141119
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Clean tests good tests
Clean tests   good testsClean tests   good tests
Clean tests good tests
 

Mehr von Eyal Vardi

Smart Contract
Smart ContractSmart Contract
Smart ContractEyal Vardi
 
Rachel's grandmother's recipes
Rachel's grandmother's recipesRachel's grandmother's recipes
Rachel's grandmother's recipesEyal Vardi
 
Performance Optimization In Angular 2
Performance Optimization In Angular 2Performance Optimization In Angular 2
Performance Optimization In Angular 2Eyal Vardi
 
Angular 2 Architecture (Bucharest 26/10/2016)
Angular 2 Architecture (Bucharest 26/10/2016)Angular 2 Architecture (Bucharest 26/10/2016)
Angular 2 Architecture (Bucharest 26/10/2016)Eyal Vardi
 
Angular 2 NgModule
Angular 2 NgModuleAngular 2 NgModule
Angular 2 NgModuleEyal Vardi
 
Upgrading from Angular 1.x to Angular 2.x
Upgrading from Angular 1.x to Angular 2.xUpgrading from Angular 1.x to Angular 2.x
Upgrading from Angular 1.x to Angular 2.xEyal Vardi
 
Angular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time CompilationAngular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time CompilationEyal Vardi
 
Routing And Navigation
Routing And NavigationRouting And Navigation
Routing And NavigationEyal Vardi
 
Angular 2 Architecture
Angular 2 ArchitectureAngular 2 Architecture
Angular 2 ArchitectureEyal Vardi
 
Angular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.xAngular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.xEyal Vardi
 
Angular 2.0 Views
Angular 2.0 ViewsAngular 2.0 Views
Angular 2.0 ViewsEyal Vardi
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Eyal Vardi
 
Template syntax in Angular 2.0
Template syntax in Angular 2.0Template syntax in Angular 2.0
Template syntax in Angular 2.0Eyal Vardi
 
Http Communication in Angular 2.0
Http Communication in Angular 2.0Http Communication in Angular 2.0
Http Communication in Angular 2.0Eyal Vardi
 
Angular 2.0 Dependency injection
Angular 2.0 Dependency injectionAngular 2.0 Dependency injection
Angular 2.0 Dependency injectionEyal Vardi
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationEyal Vardi
 
Async & Parallel in JavaScript
Async & Parallel in JavaScriptAsync & Parallel in JavaScript
Async & Parallel in JavaScriptEyal Vardi
 
Angular 2.0 Pipes
Angular 2.0 PipesAngular 2.0 Pipes
Angular 2.0 PipesEyal Vardi
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 formsEyal Vardi
 

Mehr von Eyal Vardi (20)

Why magic
Why magicWhy magic
Why magic
 
Smart Contract
Smart ContractSmart Contract
Smart Contract
 
Rachel's grandmother's recipes
Rachel's grandmother's recipesRachel's grandmother's recipes
Rachel's grandmother's recipes
 
Performance Optimization In Angular 2
Performance Optimization In Angular 2Performance Optimization In Angular 2
Performance Optimization In Angular 2
 
Angular 2 Architecture (Bucharest 26/10/2016)
Angular 2 Architecture (Bucharest 26/10/2016)Angular 2 Architecture (Bucharest 26/10/2016)
Angular 2 Architecture (Bucharest 26/10/2016)
 
Angular 2 NgModule
Angular 2 NgModuleAngular 2 NgModule
Angular 2 NgModule
 
Upgrading from Angular 1.x to Angular 2.x
Upgrading from Angular 1.x to Angular 2.xUpgrading from Angular 1.x to Angular 2.x
Upgrading from Angular 1.x to Angular 2.x
 
Angular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time CompilationAngular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time Compilation
 
Routing And Navigation
Routing And NavigationRouting And Navigation
Routing And Navigation
 
Angular 2 Architecture
Angular 2 ArchitectureAngular 2 Architecture
Angular 2 Architecture
 
Angular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.xAngular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.x
 
Angular 2.0 Views
Angular 2.0 ViewsAngular 2.0 Views
Angular 2.0 Views
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0
 
Template syntax in Angular 2.0
Template syntax in Angular 2.0Template syntax in Angular 2.0
Template syntax in Angular 2.0
 
Http Communication in Angular 2.0
Http Communication in Angular 2.0Http Communication in Angular 2.0
Http Communication in Angular 2.0
 
Angular 2.0 Dependency injection
Angular 2.0 Dependency injectionAngular 2.0 Dependency injection
Angular 2.0 Dependency injection
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and Navigation
 
Async & Parallel in JavaScript
Async & Parallel in JavaScriptAsync & Parallel in JavaScript
Async & Parallel in JavaScript
 
Angular 2.0 Pipes
Angular 2.0 PipesAngular 2.0 Pipes
Angular 2.0 Pipes
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 forms
 

Kürzlich hochgeladen

20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdfJamie (Taka) Wang
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataSafe Software
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceMartin Humpolec
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.francesco barbera
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?SANGHEE SHIN
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxYounusS2
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 

Kürzlich hochgeladen (20)

20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your Salesforce
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptx
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 

ASP.NET MVC 3.0 Validation

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

Hinweis der Redaktion

  1. Server Side: - Domain Services: Attribute, ODATA, - Domain Services with ModelClient Side: - Domain Context - Domain Data Source - NavigationSecurity:
  2. [ExternalReference] [Association(&quot;Sales_Customer&quot;, &quot;CustomerID&quot;, &quot;CustomerID&quot;)]
  3. [ExternalReference] [Association(&quot;Sales_Customer&quot;, &quot;CustomerID&quot;, &quot;CustomerID&quot;)]