代码之家  ›  专栏  ›  技术社区  ›  Barbaros Alp

基于ParentID插入数据,奇怪的行为ASP.NET MVC?

  •  0
  • Barbaros Alp  · 技术社区  · 15 年前

    我有一个简单的表单,它插入一个具有给定parentID(ServiceID)的新类别。
    我的亲子关系就是这样;

    服务>类别

    我基于ServiceId创建类别的url如下
    3是服务ID "

    我的行动方法是

    [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult Create(int? id, Category category)
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        category.Service = dbService.GetAll().WithServiceId(id.Value).SingleOrDefault();
                        dbCategory.Add(category);
                        dbCategory.Save();
                        return RedirectToRoute("List_Categories", new { ServiceId = id.Value });
                    }
                    catch
                    {
                        ModelState.AddRuleViolation(category.GetRuleViolations());
                    }
                }
                return
                    View ....
    

    当我保存数据时,它会将数据插入服务表,而不是仅将数据插入类别表,并且插入类别表的数据具有新插入的ServiceID。

    这是ASP.NET MVC ModelBinder的问题还是我犯了一个我看不到的错误?
    我在几个项目中使用过LinqToSql,从未遇到过这样的问题

    2 回复  |  直到 15 年前
        1
  •  1
  •   tvanfosson    15 年前

      var service = ...
      service.Categories.Add(category);
      service.Save();
    
        2
  •  1
  •   mare    15 年前

    您的类别对象来自哪里?正如我看到的,您依赖ASP.NETMVC模型绑定来提供它,但为此,您需要一个表单来发表文章。看看表格也会有帮助。

    就我个人而言,我宁愿在我的动作签名中使用FormCollection(而不是业务模型类),然后自己从FormCollection中取出发布的数据。因为迟早会有一些复杂的对象,这些对象具有各种一对多、多对多的关系,而模型绑定无法获取这些关系,因此您必须自己构建它们。