0

我正在使用实体框架,并且有一个视图,它是 tblAuthorMaster 类型的强类型视图模型。在 Post ModelState 上返回以下错误:

值“0”对状态无效。

这里状态是 DB/EF 中的布尔数据类型,并且在查看它的下拉列表(TEXT="active/inactive",VALUE="1/0"),所以每当我发布我的表单时,我都会收到上述错误消息。

我已经尝试了一些解决方案来克服这个问题,但它似乎没有正常工作。

以下是我的代码库:

这里 tblAuthorMaster 是 EF 类,AuthorModel 是我的自定义类,我将其用于一些自定义验证和其他内容。

    [元数据类型(typeof(AuthorModel))]
    公共部分类 tblAuthorMaster { }

    公共类 AuthorModel
    {
        [必需(错误消息 =“*”)]
        公共字符串作者姓名 { 获取;放; }
        [必需(错误消息 =“*”)]
        公共布尔状态{获取;放; }        

    }

提前致谢。

4

1 回答 1

1

为了使其正常工作,下拉列表中的 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 域模型。视图模型是您专门为给定视图的要求设计的类,它们不是由某些向导自动生成的。

于 2012-09-24T07:55:54.723 回答