Мы пытались заставить редактор-шаблон работать с динамическим свойством - безрезультатно. Может быть, один из вас может нам помочь.
Вот примерно наш класс:
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 использовала правильный шаблон редактора на основе фактического типа.)