【发布时间】:2012-07-14 18:27:44
【问题描述】:
我们一直在尝试让 Editor-Template 与动态属性一起使用 - 无济于事。也许你们中的一个可以帮助我们。
这大概是我们的班级:
public class Criterion
{
...
public string Text { get; set; }
public dynamic Value { get; set; }
public Type Type { get; set; }
...
}
我们的 razor 视图获得一个模型,其中包含一个部分列表,每个部分都包含一个标准列表。 (我们在运行时获得这些信息。)所有这些条件都应该在编辑模式下显示 - 关于它们的实际类型:(摘录)
@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="Sections_@(i)__Criteria_@(j)__Value">@criterionDisplayName</label>
@Html.Editor(name, type)
}
}
这确实正确显示了一个复选框,但它没有使用该值来正确设置复选框状态(检查条件。值是否为真)。其他类型也是如此,例如ints。
(它确实在 POST 请求后正确填写表单,但这是因为 MVC 使用临时模型来重新创建用户输入。)
正如我们所尝试和研究的那样:是否可以使用带有dynamic 类型属性的编辑器模板?如果是 - 我们怎样才能让它发挥作用? (我们不希望根据可能的类型来辨别。我们希望 MVC 框架根据实际类型使用正确的 Editor 模板。)
【问题讨论】:
标签: c# asp.net-mvc dynamic editor