В моем приложении мне нужно передать некоторый объект из представления в другой контроллер. Все работает отлично для меня, но таблица, которая является частью этого объекта, всегда равна нулю, даже если она заполнена должным образом. Позвольте мне показать код:Нулевая таблица при передаче объекта из представления в контроллер 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>
, но всегда имеет тот же результат. Может кто-нибудь знает почему?
Если вы осмотрите '' data' и url' в оказанной HTML, они правильные значения? –
Да даже в 'window.open ($. Param.querystring (url, criteria));' все данные являются правильными – Aht
Какова ваша функция 'param.querystring()'? И каков его результат? Чтобы привязать к вам параметр метода, вам понадобится '.../ReportViewer? LoadNumber = someValue & Stops = someValue & Stops = someValue' –