0

アクション (アナライザー) があり、float のリストの引数を渡して他のアクションにリダイレクトしたいのですが、リストは常に空です:

  • アクション アナライザーで、float のリスト (sfr) を入力し、アクション (_two または _three または.... _others) に引数のように渡しますが、リストは空になります。

    // GET: /Historique/
    [HttpGet] 
    public ActionResult Index()
    {
         return View();
    }
    [HttpGet]
    public ActionResult _two(IList<float> sf)
    {
         return View(sf);
    }
    [HttpGet]
    public ActionResult _three(IList<float> sf)
    { 
         return View(sf);
    }
    [HttpGet]
    public ActionResult _four(IList<float> sf)
    {
         return View(sf);
    }
    [HttpGet]
    public ActionResult _five(IList<float> sf)
    {  
         return View(sf);
    }
    [HttpGet]
    public ActionResult _six(IList<float> sf)
    {
         return View(sf);
    }
    [HttpGet]
    public ActionResult _others(IList<float> sf)
    {
         return View(sf);
    }
    [HttpPost]
    public ActionResult Analyser(FormCollection collection)
    {
          IList<float> sfr = new List<float>();
          for (int i = 0; i < Global.seg.Count; i++)
          {
               if (collection.AllKeys.Contains(i.ToString())) {
                   foreach (Point e in Global.seg[i]._pointsListe)
                   {
                        sfr.Add(e._latitude);
                        sfr.Add(e._longitude);
                    }
                }
           }
    
           if (sfr.Count == 4) return RedirectToAction("_two", new { sf = sfr });
           if (sfr.Count == 6) return RedirectToAction("_two", new { sf = sfr });
           if (sfr.Count == 8) return RedirectToAction("_four", new { sf = sfr });
           if (sfr.Count == 10) return RedirectToAction("_five", new { sf = sfr });
           if (sfr.Count == 12) return RedirectToAction("_six", new { sf = sfr });
           else return RedirectToAction("_others",sfr);
             }
        }
    }
    

では、何が問題で、どうすれば修正できますか?

4

1 に答える 1

0

このようにしてみてください:

[HttpPost]
public ActionResult Analyser(FormCollection collection)
{
    IList<float> sfr = new List<float>();
    for (int i = 0; i < Global.seg.Count; i++)
    {
        if (collection.AllKeys.Contains(i.ToString())) 
        {
            foreach (Point e in Global.seg[i]._pointsListe)
            {
                sfr.Add(e._latitude);
                sfr.Add(e._longitude);
            }
        }
    }

    var rvd = new RouteValueDictionary();
    for (int i = 0; i < sfr.Count; i++)
    {
        rvd[string.Format("sf[{0}]", i)] = sfr[i];
    }

    if (sfr.Count == 4) return RedirectToAction("_two", rvd);
    if (sfr.Count == 6) return RedirectToAction("_two", rvd);
    if (sfr.Count == 8) return RedirectToAction("_four", rvd);
    if (sfr.Count == 10) return RedirectToAction("_five", rvd);
    if (sfr.Count == 12) return RedirectToAction("_six", rvd);
    else return RedirectToAction("_others", rvd);
}
于 2012-09-17T11:05:44.307 に答える