我正在使用Entity Framework,并且有一个视图是tblAuthorMaster类型的强类型视图模型。 On Post ModelState返回以下错误:
The value '0' is not valid for Status.
这里状态是DB / EF中的boolen数据类型,并且在查看它的下拉列表(TEXT =“active / inactive”,VALUE =“1/0”),所以每当我发布我的表单时,我都会得到上面的错误消息
我已经尝试了一些解决方案来克服这个问题,但它似乎没有正确地进行。
以下是我的代码库:
这里tblAuthorMaster是EF Class,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; } }
提前致谢。
答案 0 :(得分:1)
为了使其正常工作,下拉列表中的VALUE必须为true/false
而不是1/0
。既然你没有展示你如何产生你的宿舍,那很难提供帮助,但它可能看起来像这样:
<%= 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域模型。视图模型是您根据给定视图的要求专门设计的类,它们不是由某些向导自动生成的。