我们一直在尝试让 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 使用临时模型来重新创建用户输入。)
正如我们所尝试和研究的那样:是否可以使用带有 type 属性的 Editor 模板dynamic
?如果是 - 我们怎样才能让它发挥作用?(我们不希望根据可能的类型来辨别。我们希望 MVC 框架根据实际类型使用正确的 Editor 模板。)