У меня длинная форма, которую я разбил на несколько частей, и использую @ Html.EditorFor для каждого раздела, который отлично работает, но вам нужны ваши мысли о том, можно ли улучшить этот подход или нет.Передача коллекции в EditorFor в ASP.NET MVC
Есть сегменты, и каждый сегмент может иметь несколько действий, поэтому у меня есть коллекция сегментов, и каждый сегмент в этой коллекции содержит сборник мероприятий.
public class Activity
{
public string ActivityId { get; set; }
public string ActivityDescription { get; set; }
public bool IsSelected { get; set; }
}
public class Segment
{
public string SegmentId { get; set; }
public string SegmentDescription { get; set; }
public List<Activity> Activitites { get; set; }
}
Это было, как я хотел ViewModel, что я использую в качестве модели для представления должны выглядеть, но не мог заставить его работать, так как @ Html.EditorFor не принимает тип коллекции.
public class UserPreferencesViewModel
{
//..... Other Properties
public List<Segment> Segments {get; set;}
}
Вот ViewModel
@model UserPreferencesViewModel
@{
//... Other Properties
@Html.EditorFor(m => m.Segments) //I assigned Segments three Segments in the Controller Get Method
}
Вот это EditorFor Шаблон для Сегменты
@model List<Segment>
@{
//... Other Properties
@foreach(var segment in Model)
{
//Do the stuff
}
}
Но это не работает, говоря EditorFor не может принимать коллекции и исключение в RunTime ,
Вот моя работа Вокруг. Я создал другой класс «UglySegmentWorkAround», который содержит коллекцию сегментов, а затем в UserPreferencesViewModel я удалил свойство List и вместо этого определил для этого свойство.
public class UglySegmentWorkAround
{
public List<Segment> Segments {get; set;}
}
public class UserPreferencesViewModel
{
//..... Other Properties
public UglySegmentWorkAround UglySegmentWorkAround {get; set;}
}
и вот редактор для шаблона.
@model UglySegmentWorkAround
@{
//... Other Properties
@foreach(var segments in Model.Segments)
{
//Do the stuff
}
}
Он отлично работает, но я просто не чувствую себя комфортно с этим подходом, есть все, что мне не хватает в первом подходе? Как это должно быть сделано? Я не хочу, чтобы EditorFor выполнял неявный цикл, если я передаю ему коллекцию, потому что я представляю сложную структуру пользовательского интерфейса в EditorFor, и мне нужен редактор для того, чтобы иметь внутри него цикл.
Проверьте это [ссылка] (http://stackoverflow.com/questions/13420791/mvc-editorfor-not-working-for-collection) –
@HasanFahim I don Не хочу писать цикл for вне редактора. Как я уже упоминал в моем вопросе, скорее мой пользовательский интерфейс требует, чтобы я зацикливал на коллекции внутри редактора. –