title: ModelState.isValid is false because Id model property is clashing with passed parameter
body: <p>I'm very new to MVC still and am having a hard time figuring out how best to work around this issue.</p>
  
  <p>I have a modified version of an auto-scaffolded <code>"Create" (GET)</code> action that takes an optional parameter (a default value for a drop-down list).  It then submits it's form to the <code>"Create" (HTTPPost)</code> action.</p>
  
  <pre><code>public ActionResult Create(string id = null)
  { 
      //use id to pick a default item in a drop down list.
  }
  
  [HttpPost]
  public ActionResult Create(Registration registration)
  { 
      //this method doesn't care one iota what was passed to the GET method
      // but registration.id is invalid because it's trying to set it to the value that was passed to the get method.  If id in the get method is not passed, then everything is fine
  }
  </code></pre>
  
  <p>The problem is, if a value was passed to the GET create action, then <code>ModelState.isValid</code> is false on the <code>POST create</code> action because it's trying to stuff the value that was passed to the GET action into the primary key (Id) field of the model in the POST action (which should be omitted since it's auto-generated.</p>
  
  <p>I know I could just change the primary key column name to something other than Id, but I don't have control over the database and am trying to figure out another remedy to this issue.</p>
  
  <p>If I try renaming the parameter on the GET action from 'id' to something else then I have to change the links from  <code>CREATE/paramValue</code>  to <code>CREATE/?paramName=paramValue</code> and I'd rather not do that.  (though I will if it's the only easy way).</p>
  
  <p>Is there a way to make it so the POST action ignores the values passed to the GET action?</p>