title: The model item passed into the dictionary is of type 'System.String', but this dictionary requires a model item of type 'JFS.Data.Model.Address'
body: <p>I am quite new to MVC but have been making steady progress however I have recently hit a problem that I can't seem to overcome despite reading a number of similar posts on similar topics.</p>
  
  <p>I have a model as follows (simplified for brevity)</p>
  
  <pre><code>public virtual int Id { get; set; }
  
  public virtual string Name { get; set; }
  
  public virtual Address Address { get; set; }
  </code></pre>
  
  <p>I have a strongly typed view as follows:</p>
  
  <pre><code>@model JFS.Data.Model.Supplier
  
  @using (Html.BeginForm())
  {
      @Html.ValidationSummary(true)  
  
       &lt;fieldset&gt;
          &lt;legend&gt;Supplier Address&lt;/legend&gt;
  
          &lt;div class="editor-label"&gt;
              @Html.LabelFor(model =&gt; model.Address.AddressLine1)
          &lt;/div&gt;
          &lt;div class="editor-field"&gt;
              @Html.EditorFor(model =&gt; model.Address.AddressLine1)
              @Html.ValidationMessageFor(model =&gt; model.Address.AddressLine1)
          &lt;/div&gt;
  
          &lt;div class="editor-label"&gt;
              @Html.LabelFor(model =&gt; model.Address.Country)
          &lt;/div&gt;
          &lt;div class="editor-field"&gt;
              @Html.EditorFor(model =&gt; model.Address.Country)
              @Html.ValidationMessageFor(model =&gt; model.Address.Country)
          &lt;/div&gt;
  
      &lt;/fieldset&gt;
  </code></pre>
  
  <p>And I have a shared EditorTemplate for the Country field as follows:</p>
  
  <pre><code> @model JFS.Data.Model.Address
  
      @using System.Globalization
  
      @Html.DropDownListFor(o =&gt; o.Country, GetCountries(Model), "Please select")
  
      @functions
      {
          private static IEnumerable&lt;SelectListItem&gt; GetCountries(object country)
          {
              var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
                              .Select(cultureInfo =&gt; new RegionInfo(cultureInfo.LCID))
                              .OrderBy(r =&gt; r.EnglishName)
                              .Distinct()
                              .ToList();
              return new SelectList(regions, "TwoLetterISORegionName", "EnglishName", country);
          }
      }
  </code></pre>
  
  <p>I understand the problem but not sure how best to overcome it, any advice would be very much appreciated.</p>