【问题标题】:asp.net mvc code first. make dropdown requiredasp.net mvc 代码先。使下拉菜单成为必需
【发布时间】:2012-03-28 11:24:05
【问题描述】:

下面是我的课

public class Item
{
    public int ItemID { get; set; }

    [Required(ErrorMessage = "Unit of measure1 is required.")]
    public int Uom1Id { get; set; }
    public UnitOfMeasure Uom1 { get; set; }

    [Required(ErrorMessage = "Unit of measure2 is required.")]
    public int Uom2Id { get; set; }
    public UnitOfMeasure Uom2{ get; set; }
}

public class UnitOfMeasure
{
    public int UnitOfMeasureID { get; set; }
    public string MeasureName { get; set; }
}

下面是我的初始化器:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        modelBuilder.Entity<Item>().HasRequired(x => x.StockUnitOfMeasure)
       .WithMany()
       .HasForeignKey(x => x.StockUnitOfMeasureId).WillCascadeOnDelete(false);

        modelBuilder.Entity<Item>().HasRequired(x => x.PurchaseUnitOfMeasure)
           .WithMany()
           .HasForeignKey(x => x.PurchaseUnitOfMeasureId).WillCascadeOnDelete(false);

    }

创建代码:

<div class="editor-label">
        @Html.LabelFor(model => model.Uom1Id, "Stock Unit Of Measure")
    </div>
    <div class="editor-field">
        @Html.DropDownList("Uom1Id", String.Empty)
        @Html.ValidationMessageFor(model => model.Uom1Id )
    </div>

我是 EF 新手,我不知道为什么属性 [Required] 不适用于字段 Uom1Id 和 Uom2Id,但它适用于我其他类中的其他字段。

具有键“Uom1Id”的 ViewData 项是 输入“System.Int32”,但必须是类型 'IEnumerable'。

谢谢

【问题讨论】:

    标签: entity-framework attributes code-first required


    【解决方案1】:

    int不能为null,因为它是一个有价值的类型,所以不需要给Uom1IdUom2Id添加Required属性。对于 UI,您可以创建一个视图模型,其中 Uom1IdUom2Id 将为 int?(可为空)。

    【讨论】:

    • 感谢 Andrei,如果两个下拉列表为空白,我在点击创建按钮时会出错。我将如何使下拉菜单成为必需的?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多