title: Setting the name attributes in HTML helper methods results in bad naming because of Tuple
body: <p>Hi I am trying to post a form in asp.net MVC but it seem that when I click the submit button my controller is not called.</p>
  
  <p>This happens I think because the names of each input is not set corectly because I am using a Tuple.I have tryed setting the name using HTML attributes property but it seems it does not work.</p>
  
  <p>He is my Model:</p>
  
  <pre><code>    public int Id { get; set; }
              public string Name { get; set; }
              public string Author { get; set; }
              public string Description { get; set;}
              public DateTime PublicationDate { get; set; }
              public int CategoryId { get; set; }
  </code></pre>
  
  <p>Here is my controller:</p>
  
  <pre><code>    public ActionResult AddBook()
          {
              IEnumerable&lt;CategoryModel&gt; categories = categoryContext.GetCategories();
              Tuple&lt;BookModel1, IEnumerable&lt;CategoryModel&gt;&gt; model =
                  new Tuple&lt;BookModel1, IEnumerable&lt;CategoryModel&gt;&gt;(book, categories);
              return View(model);
          }
  
          [HttpPost]
          public ActionResult AddBook(BookModel1 book)
          {
              bookContext.AddBook(book);
              return RedirectToAction("Index", "ProductManager");
          }
  </code></pre>
  
  <p>And this is my View:</p>
  
  <pre><code>    @using (Html.BeginForm()) {
          @Html.ValidationSummary(true)
          &lt;fieldset&gt;
                 @Html.LabelFor(x =&gt; x.Item1.Name , "Book Name")
                 @Html.TextBoxFor(x =&gt; x.Item1.Name, new { name = "Name" })
                 @Html.LabelFor(x =&gt; x.Item1.Author)
                 @Html.TextBoxFor(x =&gt; x.Item1.Author , new { name = "Author" })
                 @Html.LabelFor(x =&gt; x.Item1.PublicationDate ,"Publication Date")
                 @Html.TextBoxFor(x =&gt; x.Item1.PublicationDate , new { name = "PublicationDate" })
                 @Html.LabelFor(x =&gt; x.Item2 , "Select category")
                 @Html.DropDownListFor(x =&gt; x.Item2, new SelectList(Model.Item2, "Id", "Name")) 
                 @Html.LabelFor(x =&gt; x.Item1.Description)
                 @Html.TextAreaFor(x =&gt; x.Item1.Description ,  new { name = "Description" })
              &lt;p&gt;
                  &lt;input type="submit" value="Create" class="link"/&gt;
                  @Html.ActionLink("Back to List", "Index", "ProductManager", null,new { @class ="link"})
              &lt;/p&gt;
          &lt;/fieldset&gt;
      }
  </code></pre>
  
  <p>Even if I tryed setting the name property with HTMLAttributes the resulting names still look something like this : Item1.PublicationDate.
    I am using ADO.NET for data access.</p>
  
  <p>How can I solve this problem  so I can call <code>AddBook(BookModel1 book)</code> controller?</p>