1

大家好,我有一个这样的字符串,我将一个 ajax 函数传递给我的控制器操作方法

       Brand1~1001=>undefined_undefined|
           Category1~2001=>1001_Brand1|
           Category2~2002=>1001_Brand1|
                  Product3~3003=>2002_Category2|
                      Product4~3004=>Product3~3003|
                 Product5~3005=>2002_Category2|
                 Product6~3006=>2002_Category2|

我在 db 中有一个 Menus 表,我已将其作为实体模型添加到我的项目中

       Menus

          [MenuID],[MenuName],[ParentID]

我有这样的模型

           public class MenuItems
            {
              public List<MenuItems> GetALL { get; set; }
              public int MenuId { get; set; }
              public string MenuName { get; set; }
              public int parentId { get; set; }
            }

现在我想拆分我拥有的字符串并像这样插入上表

           [MenuID],[MenuName],[ParentID]
            1001   ,Brand1    ,null
            2001   ,category1 ,1001
            2002   ,category2 ,1001
            3003   ,product3  ,2002
            3004   ,product4  ,3003
            3005   ,product5  ,2002
            3006   ,product6  ,2002

在上面的字符串 Brand1~1001=>undefined_undefined| 这里 Brand1~1001 是父菜单,1001 是菜单的 ID Category1~2001=>1001_Brand1| 这里 Category1~2001 是 1001_Brand1 的子菜单

我正在尝试什么

    public ActionResult MenuDrag()
    {
        return View();
    }
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult MenuDrag(string menustring)
    {
        if (!String.IsNullOrEmpty(menustring))
        {
            string[] menus = menustring.Split('|');
            foreach (var m in menus)
            {
                string[] list = m.Split('>'); 
                //stuck from here confused what to do next and how do i insert the data in my accordingly
            }
        }

        return View();
    }
4

1 回答 1

0

你快到了,只需用这个替换你的 post 方法

      [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult MenuDrag(string menustring)
    {            
        MenuItems items = new MenuItems();
      //check the string for empty
        if (!String.IsNullOrEmpty(menustring))
        {
            string[] menus = menustring.Split('|');
            foreach (var m in menus)
            {
                if (m != "")
                {
                    string[] list = m.Split('>');


                    string[] menu = list[0].Split('~');
                    string[] parents = list[1].Split('~');
                    items.MenuItemID = Convert.ToInt16(menu[1]);
                    items.MenuName = menu[0].ToString();
                    if (parents[0] == "undefined")
                    {
                        items.ParentID = 0;
                        db.MenuItems.Add(items);
                        db.SaveChanges();
                    }
                    else
                    {
                        int parentid=Convert.ToInt16(parents[0]);
                        var menuid = from me in db.MenusMains where me.MenuItemID == parentid select new { MenuID = me.MenuID };
                        foreach (var id in menuid)
                        {
                            items.ParentID = Convert.ToInt16(id.MenuID);                               
                        }
                        db.MenuItems.Add(items);
                        db.SaveChanges();
                    }                      
                }
            }
        }
        return View();
    }

}

我用过

          if (m != "")
            {
            }

因为你可能会在你的字符串中得到一个索引超出范围的异常

  string[] menus = menustring.Split('|');

你会得到一个空的('|')你必须处理这个

希望这有效

于 2012-11-02T06:26:22.623 回答