首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC: Member和Member.Items.add(Item)未保存

MVC: Member和Member.Items.add(Item)未保存
EN

Stack Overflow用户
提问于 2009-06-07 21:18:24
回答 2查看 97关注 0票数 1

该项目不会保存。只有成员会被保存。

当我调试AcceptVerbs(HttpVerbs.Post)时,该项中的信息为空。为什么?我该如何解决这个问题?

当它转到创建的post方法时,项不会跟随成员。并且这些项目不会被保存。我调试了这些信息,发现有0个数字项。当我按下按钮时,它为什么不保存项目呢?

仅保存成员项。

代码语言:javascript
复制
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));
    }
}
EN

回答 2

Stack Overflow用户

发布于 2009-06-07 21:29:18

传递给create函数的成员实际上是从表单绑定的数据。为了确保它正常工作,表单上的元素必须与成员中的属性命名相同。因此,如果在成员中有名为memberName的内容,则需要将视图中的字段命名为相同的名称。

代码语言:javascript
复制
<form ...
  <input type="text" name="memberName"/>
... 
</form>

编辑:

在读完你的评论后,我仍然不是你想要做的100%。如果你想让你已经创建的成员拥有一个项目,那么将项目创建代码下移到第二次创建。将带有项的成员传递给强类型视图。包含项的成员永远不会被持久化,因此它不会返回到控制器,也不会进入模型。

票数 1
EN

Stack Overflow用户

发布于 2009-06-07 21:50:29

代码语言:javascript
复制
    public ActionResult Create()
    {
        Member member = new Member();
        Item item = new Item();
        member.Items.Add(item);

        return View(new ClassifiedsFormViewModel(member));
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/962855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档