【问题标题】:Pass SelectList item list one controller to another将 SelectList 项目列表从一个控制器传递到另一个控制器
【发布时间】:2015-02-04 08:05:04
【问题描述】:

我在控制器动作中使用了选择列表项,并通过传入参数将选择列表项值传递给另一个控制器动作,但在另一个控制器动作中没有得到任何值

//第一个控制器动作

List<SelectListItem> dropdownItems = new List<SelectListItem>();
foreach (var item in (IEnumerable)singlecheckbox)
  {
    int Id = Convert.ToInt32(item);
    dropdownItems.AddRange(new[]{
    new SelectListItem() { Text = null, Value = Id.ToString() }});
  }
 return RedirectToAction("mergeletterttofiles123", "managefile", new { dropdownItems, SeatId = seatId });

// 第二个控制器动作

public ActionResult mergeletterttofiles123(List<SelectListItem> dropdownItems, int SeatId, string msg)
{
     // dropdownItems shows null( 0 count)
}

【问题讨论】:

  • 您不能将复杂对象(除非它们仅包含值类型)或集合作为参数传递给ActionResult GET 方法。您需要将集合保存在某个地方,然后再次获取它(尽管这是您的情况,只需在第二种方法中再次生成 SelectList。

标签: c# asp.net-mvc selectlistitem


【解决方案1】:

作为一个选项,您可以在 Session 中存储列表:

...........
//your code
Session["dropdownItems"]=dropdownItems;
RedirectToAction("mergeletterttofiles123", "managefile", new { SeatId = seatId });

然后:

public ActionResult mergeletterttofiles123(int SeatId, string msg)
{
    //then get it using something like
    var dropdownItems = Session["dropdownItems"] as List<SelectListItem>;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    相关资源
    最近更新 更多