定义使用ModelState的编辑器模板

时间:2014-11-24 10:05:22

标签: asp.net-mvc

请在Model和ModelState不匹配时帮我实现编辑器模板。

例如:Model.A ==' x',ViewData.ModelState [' A'] ==' y'。

当表单发布无效时可能会发生这种情况。

原生模板将此作为帐户,并从ModelState中显示正确的值。但我无法找到他们的来源。

我需要在自己的temlate中实现这一点。我应该只检查ModelState中的当前值并在设置时使用它。或者你可以建议一个更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我看了一下HtmlHelpers(编辑)并想出了这个。在示例中,模型/值是一个整数:

var value = Model; //value according to the model
var fieldName = ViewData.TemplateInfo.GetFullHtmlFieldName("");
ModelState modelState;
if(ViewData.ModelState.TryGetValue(fieldName, out modelState) && modelState.Value != null)
{
    value = (int?) modelState.Value.ConvertTo(typeof(int?), null);
}

现在包含模型值或发布的ModelState值( attemptsValue )。