title: How AddImplicitRequiredAttributeForValueTypes really works and what it is for?
body: <p>Here is a description (ASP.NET MVC 3):</p>
  
  <ol>
  <li><p>I have this parameter <code>DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes</code> in the default value <code>true</code> (checked with the debugger)</p></li>
  <li><p>I have value-type field in my model (<code>int</code>, <code>DateTime</code>, <code>decimal</code>):</p>
  
  <pre><code>public class MyModel
  {    
     public int SomeField { get; set; }
  }
  </code></pre></li>
  <li><p>When I post <em>empty</em> form to this action (no <code>SomeField</code> specified): </p>
  
  <pre><code>  public ActionResult Submit(MyModel request)
    { 
        if (ModelState.IsValid)
        {
            ..
        }
    else
        {
            ..
        }
     }
  </code></pre></li>
  <li><p>I don't have any validation errors!  It seems to me logical -- the default value of int is <code>0</code>. Which is a value.</p></li>
  </ol>
  
  <p>Questions:</p>
  
  <p>If I want to force this value always expicitly set in request I should make it nullable and put <code>[Required]</code> on it, this works. But what <code>DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes</code> is for?</p>