MVC: Member и Member.Items.add (элемент) не сохраняются - PullRequest
1 голос
/ 08 июня 2009

Товар не сохраняется. Спасается только участник.

Когда я отлаживаюсь [AcceptVerbs (HttpVerbs.Post)] информация пуста в элементе. Зачем? Как мне решить это?

Когда дело доходит до метода post создания, то ПУНКТ не следует за членом. И ЭЛЕМЕНТЫ не спасаются. Я отлаживаю информацию, и есть 0 элементов Number. Почему он не сохраняет элементы также, когда я нажимаю кнопку.

Сохраняется только элемент участника.

public class ClassifiedsFormViewModel
{

    IClassifiedsRepository classifiedsRepository = new ClassifiedsRepository(); 
    public Member Member { get; private set; }
    public SelectList Municipalities { get; private set; } 

    public ClassifiedsFormViewModel(Member member) 
    {   
        Member = member;
        Municipalities = new SelectList(classifiedsRepository.GetMunicipalities()
                                 ,"MunicipalityId", "Municipality1"); 
    }

}

    public ActionResult Create()
    {
        Member member = new Member();
        Item item = new Item();
        member.Items.Add(item);

        return View(new ClassifiedsFormViewModel(member));
    }

    //
    // POST: /Items/Create

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(Member member)
    {

        if (ModelState.IsValid)
        {

            try
            {
                classifiedsRepository.Add(member);
                classifiedsRepository.Save();

                return RedirectToAction("Create", new { id = member.MemberId });
            }
            catch
            {
                ModelState.AddModelErrors(member.GetRuleViolations());
            }
        }

        return View(new ClassifiedsFormViewModel(member));
    }
}

Ответы [ 2 ]

1 голос
/ 08 июня 2009

Член, который передается в функцию создания, фактически связан с вашей формой. Чтобы убедиться, что это работает, вы должны иметь элементы в форме, названные так же, как свойства вашего члена. Поэтому, если у вас есть член с именем memberName в Member, вам нужно будет назвать поле в представлении одинаково.

<form ...
  <input type="text" name="memberName"/>
... 
</form>

Редактировать:

После прочтения ваших комментариев я все еще не на 100% хочу, чтобы вы делали. Если вы хотите, чтобы у созданного вами участника был элемент, переместите код создания элемента ко второму пункту Создать. То, что у вас есть, передает члену с предметом в строго типизированное представление. Элемент с элементом никогда не сохраняется, поэтому он не вернется к контроллеру и не попадет в модель.

0 голосов
/ 08 июня 2009
    public ActionResult Create()
    {
        Member member = new Member();
        Item item = new Item();
        member.Items.Add(item);

        return View(new ClassifiedsFormViewModel(member));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...