使用自定义类重载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