Мы пытались заставить редактор-шаблон работать с динамическим свойством - безрезультатно. Может быть, один из вас может нам помочь.
Вот примерно наш класс:
public class Criterion
{
...
public string Text { get; set; }
public dynamic Value { get; set; }
public Type Type { get; set; }
...
}
В нашем представлении бритвы есть модель, содержащая список разделов, каждый из которых содержит в себе список критериев. (Мы получаем эту информацию во время выполнения.) Все эти критерии должны отображаться в режиме редактирования - относительно их фактического типа: (выдержка)
@for (int i = 0; i < model.Sections.Count(); i++)
{
for (int j = 0; j < model.Sections[i].Criteria.Count(); j++)
{
var criterion = model.Sections[i].Criteria[j];
var type = criterion.Type.Name;
var name = "Sections[" + i + "].Criteria[" + j + "].Value";
var criterionDisplayName = criterion.Text;
<label for="[email protected](i)[email protected](j)__Value">@criterionDisplayName</label>
@Html.Editor(name, type)
}
}
Это показывает, например, флажок правильно, но он не использует значение, чтобы правильно установить статус флажка (если значение критерия равно true). То же самое касается других типов, таких как ints.
(Он правильно заполняет форму после запроса POST, но это потому, что MVC использует временную модель для воссоздания ввода пользователей.)
Насколько мы пробовали и исследовали: возможно ли использовать шаблон редактора со свойствами типа dynamic? Если да - как мы можем заставить его работать? (Мы не хотели бы различать в зависимости от возможного типа. Мы хотели бы, чтобы структура MVC использовала правильный шаблон редактора на основе фактического типа.)