ASP.NET MVC - отправить форму со сложной моделью с EntitySet - PullRequest
1 голос
/ 25 января 2010

Я изо всех сил пытаюсь заставить мою форму работать с моими моделями ...

Итак, у меня есть 3 модели

Account
  has_one  -> Company
  has_many -> Individuals -> has_one Document

Таким образом, учетная запись может иметь одну компанию и несколько частных лиц с одним документом.

Когда я отправляю свои формы, у меня есть следующее действие

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult OpenAnAccount(string area, [Bind(Exclude = "Id")] Website.Model.Account account)
{
  var db = new DB();

  var type = new int();

  switch (area)
  {
      case "business": type = 1; break;
      case "private": type = 2; break;
  }

  if (ModelState.IsValid)
  {
      try
      {
         account.Type = type;
         db.Accounts.InsertOnSubmit(account);
         db.SubmitChanges();
         return View("OpenAnAccount/ThankYou");
      }
      catch
      {
         return View();
      }
  }
  else
  {
     return View();
  }    
}

А на моем бланке простые вещи вроде

%label{for='companyName'} <em>*</em>Company Name
%input{class='required' id='companyName' name='Company.Name' type='text'}
%label{for='companyTradeName'}Trading As (if Different)
%input{id='companyTradeName' name='Company.Trade' type='text'}
%label{for='companyRegistrationNumber'} <em>*</em>Company Registration Number
%input{class='required' id='companyRegistrationNumber' name='Company.Registration' type='text'}
%label{for='vatNumber'}VAT Number (if Applicable)
%input{id='vatNumber' name='Company.VAT' type='text'}

Это означает, что я называю поля как Company.Name, Company.Registration и т. Д. и для людей я делаю так

%label{for ='firstName_0'} <em>*</em>First Name
%input#firstName_0.required.firstName{ name='Individuals[0].FirstName' type='text'}
%label{for='middleName_0'} Middle Name
%input#middleName_0{ name='Individuals[0].MiddleName' type='text'}
%label{for='lastName_0'} <em>*</em>Last Name
%input#lastName_0.required{ name='Individuals[0].LastName' type='text'}

как физические лица [0]. Имя, физические лица [0]. Последнее имя и т. Д.

Но что происходит, так это то, что я действительно получаю аккаунт в моей компании, но он не работает для физических лиц ... он ничего не делает с базой данных?

Кто-нибудь может мне помочь в этом?

Я проверил некоторые ресурсы, подобные этой http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx, но я полагаю, что в моем случае это не работает, потому что ничего не изменилось.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 25 января 2010

Этот ответ казался простым способом сделать это: ASP.Net MVC - модель с коллекцией, не заполняемой при обратной передаче На случай, если кому-то понадобится

0 голосов
/ 10 марта 2010

Я принимаю возможное решение, посмотри на это и скажи мне, что ты думаешь, пожалуйста ...

http://mooinooi.codeplex.com/

...