如何从动作中查看int列表,然后从视图到mvc 4中的方法?

时间:2013-07-25 05:32:17

标签: asp.net-mvc asp.net-mvc-4 asp.net-ajax viewbag tempdata

Create(post)操作中的MVC4应用程序中,我想传递 int type list 以查看是否发生错误。然后,从那里通过ajax post将它传递给同一个控制器中的其他方法。因此,TempDataViewDataViewBag对我没有帮助。

public ActionResult Create(CreateModel model)
       {
             if(hasCustomError)
             {
                  List<int> selectedItems = new List<int>() { 1, 2, 8 }; //for example.
                  ViewBag.VB = selectedItems;

                  //ViewData["VD"] = selectedItems;
                  //TempData["TD"] = selectedItems;

                   return View(model);
             }

             return RedirectToAction("Index");
       }

return View(model);之后,selectedItems列表传递到Create.cshtml视图。它在这里有价值我检查。但是从这里开始我应该通过ajax post将该列表传递给GetTreeData方法:

@{
   if (ViewBag.VB != null)
      {
          TempData["SelectedItems"] = ViewBag.VB as List<int>;
      }
}


    $("#myTree").jstree({
        json_data: {
            "ajax": {
                url: "@Url.Action("GetTreeData", "MyController")",
                type: "POST",
                dataType: "json",
                contentType: "application/json charset=utf-8"
            }
        },
        checkbox: {
            real_checkboxes: true,
            checked_parent_open: true
        },
        plugins: ["themes", "json_data", "ui", "checkbox"]
    });

MyController中,GetTreeData方法TempData["SelectedItems"]中的null public string GetTreeData() { List<int> selecteds = null; if (TempData["SelectedItems"] != null) { selecteds = TempData["SelectedItems"] as List<int>; TempData["SelectedItems"] = null; } ...................................... }

{{1}}

我为所有人尝试了这个(TempData,ViewData和ViewBag)。没有改变。

如何将该列表从操作传递到视图,然后从该视图传递到方法?

1 个答案:

答案 0 :(得分:1)

创建一个viewmodel,在该viewmodel中将您现在使用的模型设置为字段,并为该列表添加额外字段