使用自定义类重载EF验证
我使用实体框架,并有一个视图是强类型tblAuthorMaster类型的视图模型。 Post ModelState返回以下错误:
The value '0' is not valid for Status.
这里的状态是DB / EF中的boolen数据类型和查看它的下拉列表(TEXT =“active / inactive”,VALUE =“1/0”),所以无论何时我发布我的表单,我用来获取上述错误消息。
我尝试了一些解决方案来克服这个问题,但它似乎不正确。
以下是我的代码库:
这里tblAuthorMaster是EF类和AuthorModel是我的自定义类,它用于一些自定义验证和其他的东西。
[MetadataType(typeof(AuthorModel))] public partial class tblAuthorMaster { } public class AuthorModel { [Required(ErrorMessage = "*")] public string AuthorName { get; set; } [Required(ErrorMessage = "*")] public bool Status { get; set; } }
提前致谢。
为了正确工作,下拉菜单中的VALUE必须是true/false
而不是1/0
。 既然你没有显示你是如何产生你的doropdown,它很难帮助,但它可能看起来像这样:
<%= Html.DropDownListFor(
x => x.Status,
new[]
{
new SelectListItem { Value = "true", Text = "active" },
new SelectListItem { Value = "false", Text = "inactive" },
}
) %>
另外,使用具有2个可能值的下拉菜单有什么意义? HTML为此提供了复选框:
<%= Html.CheckBoxFor(x => x.Status) %>
最后一句话:在你的问题中你称之为视图模型根本不是视图模型。 这是一个自动生成的EF域模型。 视图模型是专门针对给定视图的需求设计的类,它们不是由某个向导自动生成的。
链接地址: http://www.djcxy.com/p/56577.html上一篇: Overload EF Validation with Custom class
下一篇: Accessing custom principal within a custom ActionFilterAttribute