0

Create(发布)操作中的 MVC4 应用程序中,我想传递int 类型列表以查看是否发生错误。然后,从那里通过 ajax post 将其传递给同一控制器中的其他方法。所以,TempData不要ViewData帮助ViewBag我。

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查看的列表。我在这里检查过它的价值。GetTreeData但是从这里我应该通过 ajax 帖子将该列表传递给方法:

@{
   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;
            }
            ......................................
        }

我对所有(TempData、ViewData 和 ViewBag)都进行了尝试。没有改变。

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

4

1 回答 1

1

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

于 2013-07-25T06:34:17.723 回答