title: Model CheckBoxFor Properties being posted twice Asp Net MVC 3
body: <p>So I have a partial view...</p>
  
  <pre><code>&lt;%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl&lt;NewsletterUnsubscribe_MVC3v2.Models.IntegraRecord&gt;" %&gt;
  
  &lt;% if (!String.IsNullOrEmpty(Model.ErrorMessage))
     {%&gt;
     &lt;div class="input-validation-error"&gt;
      &lt;%:Model.ErrorMessage %&gt;
     &lt;/div&gt;
  &lt;% }
     else
     {%&gt;
  
  &lt;% using (Html.BeginForm())
  {%&gt;
      &lt;%:Html.ValidationSummary(true)%&gt;
      &lt;fieldset&gt;
          &lt;legend&gt;IntegraRecord&lt;/legend&gt;
          &lt;div class="editor-field"&gt;
                  &lt;%:Html.LabelFor(m =&gt; m.EmailAddress)%&gt;: &lt;strong&gt;&lt;%:Model.EmailAddress%&gt;&lt;/strong&gt;
          &lt;/div&gt;
          &lt;%:Html.HiddenFor(m=&gt;m.EmailAddress) %&gt;
          &lt;div class="editor-field"&gt;
                  Unsubscribe from Area mailings: &lt;%:Html.CheckBoxFor(m =&gt; m.AreaUnsubscribe)%&gt;
          &lt;/div&gt;
          &lt;div class="editor-field"&gt;
                  Unsubscribe from Monthly newsletters: &lt;%:Html.CheckBoxFor(m =&gt; m.MonthlyUnsubscribe)%&gt;
          &lt;/div&gt;
          &lt;p&gt;
              &lt;input type="submit" value="Save" /&gt;
          &lt;/p&gt;
      &lt;/fieldset&gt;
  &lt;% }
     }%&gt;
  </code></pre>
  
  <p>When I hit submit and look what's in the posted data I see</p>
  
  <pre><code>EmailAddress:someone@somewhere.co.uk
  AreaUnsubscribe:true
  AreaUnsubscribe:false
  MonthlyUnsubscribe:true
  MonthlyUnsubscribe:false
  </code></pre>
  
  <p>As a result TryUpdateModel returns true but doesn't populate any fields</p>
  
  <p>This gets posted to the controller...</p>
  
  <pre><code> [HttpPost]
          public ActionResult GetRecord(IntegraRecord model)
          {
              if (TryUpdateModel(model))
              {
                  try
                  {
                      BusinessLayer.UpdateEmailAddress(model);
                  }
                  catch (ArgumentException)
                  {
                      return View("Error", ViewBag.Message = "Could Not Update Email Address.");
                  }
              }
              return PartialView("GetRecord", model);
          }
  </code></pre>
  
  <p>Any help massively appreciated...</p>
  
  <hr>
  
  <p>Update: So following the clarification below (Thanks!)</p>
  
  <p>I'm not using a custom model binder so I guess I'm missing some other convention too...</p>
  
  <p>Here's my model...</p>
  
  <pre><code>public class IntegraRecord
      {
          private const string EmailRegex = @"[snip]";
  
          [Required(ErrorMessage = "Email Address is required")]
          [RegularExpression(EmailRegex, ErrorMessage = "This does not appear to be an email address")]
          public string EmailAddress;
  
          public bool AreaUnsubscribe;
          public bool MonthlyUnsubscribe;
  
          public string ErrorMessage;
  
          public IntegraRecord()
          {
          }
  
          public IntegraRecord(string email, bool area, bool monthly)
          {
              EmailAddress = email;
              AreaUnsubscribe = area;
              MonthlyUnsubscribe = monthly;
          }
      }
  </code></pre>
  
  <hr>