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|

そして、データベースにメニューテーブルがあり、それをエンティティモデルとしてプロジェクトに追加しました

       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

ポストメソッドをこれに置き換えるだけで、ほとんどそこにいます

      [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 に答える