2009-06-07 17 views
1

該物品未保存。只有會員得到保存。MVC:Member和Member.Items.add(物品)未保存

當我調試[AcceptVerbs(HttpVerbs.Post)] 項目中的信息是空的。爲什麼?我應該如何解決這個問題?

當它轉到創建的後期方法時,ITEM不會跟隨該成員。並且ITEMS不會被保存。我調試信息,並有0個數字項目。當我按下按鈕時,它爲什麼不保存項目?

只有成員項目被保存。

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)); 
    } 
} 

回答

1

傳遞給create函數的成員實際上是來自表單的數據綁定。爲了確保它能夠正常工作,您必須將表單上的元素與您的成員中的屬性命名爲相同。所以如果你在成員中有一個叫做memberName的東西,你需要在視圖中命名該字段是同一個東西。

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

編輯:

閱讀您的意見後,我還沒有100%你打算做什麼。如果您希望您創建的成員擁有一個項目,請將項目創建代碼下移到第二個創建。你已經將一個成員通過一個項目傳遞給一個強類型視圖。具有該項目的成員永遠不會持續,因此它不會回到控制器,也不會進入模型。

+0

我覺得你沒有回答我的問題。 Iam問的是。如果我將創建一個成員和項目。你可以在我的代碼中看到 。會員可以有一個項目。 當我按下按鈕時,會員獲取信息戳記 – Frajer 2009-06-07 21:47:53

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

     return View(new ClassifiedsFormViewModel(member)); 
    }