该项目未保存。只有会员才能得到保存。
当我调试[AcceptVerbs(HttpVerbs.Post)]时 项目中的信息为空。为什么?我该怎么解决这个问题?
当它转到创建的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));
}
}
答案 0 :(得分:1)
传递给create函数的成员实际上是从表单中数据绑定的。为了确保它的工作原理,您必须在表单上的元素名称与您的成员中的属性相同。因此,如果在Member中有一个名为memberName的东西,你需要在视图中为该字段命名相同的东西。
<form ...
<input type="text" name="memberName"/>
...
</form>
修改:
在阅读你的评论后,我仍然不是100%你想做的事情。如果您希望您创建的成员拥有项目,则将项目创建代码向下移动到第二个创建。您所拥有的内容将具有项目的成员传递给强类型视图。具有该项目的成员永远不会保留,因此它不会返回到控制器,也不会进入模型。
答案 1 :(得分:0)
public ActionResult Create()
{
Member member = new Member();
Item item = new Item();
member.Items.Add(item);
return View(new ClassifiedsFormViewModel(member));
}