2016-03-22 2 views
-1

В моем приложении мне нужно передать некоторый объект из представления в другой контроллер. Все работает отлично для меня, но таблица, которая является частью этого объекта, всегда равна нулю, даже если она заполнена должным образом. Позвольте мне показать код:Нулевая таблица при передаче объекта из представления в контроллер ASP.MVC

Вид:

var loadNumber = @(Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model.LoadNumber))); 
var data = @(Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model.Stops))); 
var url = '@Url.Action("ReportViewer","LoadReport")'; 


var criteria = {LoadNumber: loadNumber,Stops: []}; 
for (var i = 0; i <= selected.length - 1; i++) { 
    var id = selected[i].cells[1].innerText; 
    for (var j = data.length - 1; j >= 0 ; j--) { 
     if (data[j].StopmstSequence == id) { 
      criteria.Stops.push(data[j].StopID); 
      break; 
     } 
    } 
} 
window.open($.param.querystring(url, criteria)); 

В этой части все выглядит нормально. Объект критериев хорошо заполнен.

Контроллер:

public ActionResult ReportViewer(Criteria criteria) 
{ 
    return View(); 
} 

Конечно, этот контроллер гораздо больше, но я не могу показать остальной код (объект критериев является наиболее важным)

Критерии Класс:

public class Criteria 
{ 
    public string LoadNumber { get; set; } 
    public string[] Stops { get; set; } 
} 

Теперь после запуска кода в представлении Criteria объект в контроллере имеет LoadNumer правильно, но Stops всегда null. Я пытаюсь изменить с string[] на List<string> или даже IEnumerable<string>, но всегда имеет тот же результат. Может кто-нибудь знает почему?

+0

Если вы осмотрите '' data' и url' в оказанной HTML, они правильные значения? –

+0

Да даже в 'window.open ($. Param.querystring (url, criteria));' все данные являются правильными – Aht

+0

Какова ваша функция 'param.querystring()'? И каков его результат? Чтобы привязать к вам параметр метода, вам понадобится '.../ReportViewer? LoadNumber = someValue & Stops = someValue & Stops = someValue' –

ответ

0

Возможно, что объект json критериев не кодируется URL-адресом, поэтому он не полностью отправляется. Поскольку window.open - это операция GET, вам нужно будет правильно закодировать все.

Кажется похожее на это: How to escape a JSON string to have it in a URL?

Смежные вопросы