Как передать список int из действия в представление, а затем из представления в метод в mvc 4?

В приложении MVC4 в действии Create(post) я хочу передать список типов int для просмотра в случае возникновения ошибки. А затем оттуда передать его другому методу в том же контроллере с постом ajax. Итак, 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). Ничего не изменилось.

Как передать этот список из действия в представление, а затем из этого представления в метод?


person Jeyhun Rahimov    schedule 25.07.2013    source источник
comment
Я нашел решение. Сначала я конвертирую список int в список строк как 1,2,8, а затем url: @Url.Action(GetTreeData, MyController, new {param = stringList}),   -  person Jeyhun Rahimov    schedule 25.07.2013


Ответы (1)


Создайте модель представления, в этой модели представления установите свою модель, которую вы сейчас используете, в качестве поля, и добавьте дополнительное поле для этого списка.

person Dylan Slabbinck    schedule 25.07.2013
comment
да я другого пути не вижу. Я не найду никакого способа, сделайте такой. - person Jeyhun Rahimov; 25.07.2013