title: DropDownListFor - does not select "Selected" value
body: <p>Another one of these questions regarding <code>DropDownListFor</code> not selecting the <em>"Selected"</em> value.
  Here is code:</p>
  
  <p><strong>Model:</strong></p>
  
  <pre class="lang-cs prettyprint-override"><code>public class CreateEditAccountModel
  {
      [Required]
      [Display(Name = "Permission")]
      public int PermissionId { get; set; }
      public IEnumerable&lt;SelectListItem&gt; Permissions { get; set; }
  }
  </code></pre>
  
  <p><strong>Controller:</strong></p>
  
  <pre class="lang-cs prettyprint-override"><code>[HttpGet]
  [Authorize]
  public ActionResult EditAccount(int id)
  {
      CreateEditAccountModel model = new CreateEditAccountModel();
      model.Permissions = PermissionsAll();
      return View("CreateEditAccount", model);
  }
  </code></pre>
  
  <p>At this point if I put a break point on return line, the <code>model.Permissions</code> contains proper <code>IEnumerable&lt;SelectListItem&gt;</code> object with multiple items and only one, that has <code>Selected = true</code>.</p>
  
  <p><strong>View:</strong></p>
  
  <pre class="lang-cs prettyprint-override"><code>@using (Html.BeginForm())
  {
      @Html.DropDownListFor(m =&gt; m.PermissionId, Model.Permissions)
  }
  </code></pre>
  
  <p><strong>Renders:</strong></p>
  
  <pre class="lang-html prettyprint-override"><code>&lt;select id="PermissionId" name="PermissionId"&gt;
      &lt;option value=""&gt;-- Select --&lt;/option&gt;
      &lt;option value="1"&gt;Permission one&lt;/option&gt;
      &lt;option value="2"&gt;Permission two&lt;/option&gt;
  &lt;/select&gt;
  </code></pre>
  
  <p>For some reason there is no selected attribute on any of the options and first option is selected.</p>
  
  <p>Any help is appreciated.</p>
  
  <hr>
  
  <p><strong>UPDATE</strong></p>
  
  <p>It appears it has something to do with this <a href="http://publicityson.blogspot.com/2010/07/aspnet-mvc-htmldropdownlist-not-showing.html">article</a>. To summarize the solution of this article, I need to make sure that the property name (first argument of <code>@html.DropDownList</code>) <strong>does not</strong> match any existing properties of the model. <em>Can anybody explain why this is the case?</em></p>
  
  <p>It renders drop down correctly when I write in the view something like this:</p>
  
  <pre class="lang-cs prettyprint-override"><code>@Html.DropDownList("PermissionIdNotMatching", Model.Permissions)
  </code></pre>
  
  <p>However, it does not make any logical sense to do it since I actually want binder to be able to match the name of the select element to the model property. Otherwise I'd have to manually grab the value like this: <code>Request.Form["PermissionIdNotMatching"];</code></p>
  
  <p>Anybody have any thoughts?</p>
  
  <hr>
  
  <p><strong>SOLUTION</strong></p>
  
  <p>See accepted answer and the first comment to it.</p>