Вот функциональность, которую я хотел бы использовать: у меня есть класс myClass и хотел бы перебрать коллекцию, содержащую все свойства этого класса. Я бы хотел отправить индекс этой коллекции вместе с другими данными, чтобы я мог управлять каждой последовательностью итерации.Как получить значение из ViewData, когда объект не является строкой?
Ниже приведены упрощенные версии метода Action и View (для этой функции я буду использовать одно и то же действие).
1) Действие
public ActionResult CreateHierarchy(int? index)
{
if(index < PropertiesOfMyClass.Lenght)
{
//Other code omitted
ViewData["index"] = ((index == null) ? 1 : index++);
Return View();
}
}
2) Просмотр
<% Using(Html.BeginForm()){%>
//Other Code omitted
<% = Html.Hidden("Index", ViewData["index"])%>
<input type = "submit" value = "Do someting"/>
<%}%>
Я также разместил в нижней части страницы, так что я могу проверить значение индекса,
<% = ViewData["index"]%>
К сожалению, не работает. Я получаю только номер 1. Я что-то упускаю? таких как бросок для Viewdata? Должен ли я написать что-то вроде этого:
<% = Html.Hidden("index", (int)ViewData["index"])%>
Это не работает либо
======= EDIT 6 апреля/08h37AM
Настоящее имя MyClass является иерархия, которая содержит несколько уровней, как это
public class Hierarchy
{
public int HierarchyID { get; set;}
public string Level1 { get; set; }
public string Level2 { get; set; }
----
public string Level7 { get; set; }
}
Как только я выше свойства в коллекции, я могу перебирать эту коллекцию из Level1 в level7 по очереди (в качестве значения для каждого уровня может иметь множество источников). Индекс очень важен для меня как полагаться на него, чтобы двигаться вперед или назад.
Также я представил логику (1) в действии и в представлении (2), чтобы можно было следить за тем, как индекс передается между действием и представлением.
Спасибо за помощь
Любой шанс, что PropertiesOfMyClass.Length возвращается 1 или ниже? Что произойдет, если вы удалите этот условный элемент так, чтобы независимо от индекса всегда увеличивался? – Lazarus
Я вообще не вижу «MyClass» в вашем коде. Из того, что вы описываете, код производит именно то, что должно быть. Можете ли вы уточнить, что именно вы пытаетесь сделать, и каков именно результат? –
Что называется: CreateHierarchy (int? Index)? Есть ли вероятность, что вы всегда передаете null в это, поэтому вместо инкремента int он всегда оценивает значение 1? – SlackerCoder