0

我有一个 webforms 项目,我在 ASP.NET 4.5 上使用新的模型绑定。我的页面上有一个强类型的 FormView,其中包含一个 DropDownList,它允许用户选择一个相关的实体(想想产品-> 类别)。

有没有办法设置它,以便在我的 InsertMethod 上,我可以直接访问相关实体(例如 Product.Category)?我需要检查相关实体的一些验证规则,我发现这样做的唯一方法是设置我的 DropDownList 以返回相关记录的 Id,然后从数据库中获取它。这似乎相当低效。

编辑:该死的,没人啊!?好吧,这就是您作为新技术的早期采用者所获得的!:D

4

1 回答 1

0

我在 MVC 上遇到了同样的问题,我找到的最佳解决方案是在我的模型上使用 ForeignKey 数据注释,这样我就可以只插入相关对象的 ID 并稍后检索对象。这是一个例子:

public class Product {
    public int ProductId { get; set; }
    public string Name { get; set; }
    // Add this field so I can add the entity to the database using 
    // category id only, no need to instantiate the object
    public int CategoryId { get; set; }

    // Map this reference to the field above using the ForeignKey annotation
    [ForeignKey("CategoryId")]
    public virtual Category Category { get; set; }
}

public class Category {
    public int CategoryId { get; set; }
    public string Name { get; set; }
}

现在,自从我上次使用 WebForms 已经很久了,所以我真的不知道如何将类别列表绑定到 DropDownList,可能是这样的:

<asp:DropDownList ID="CategoryId" SelectMethod="GetCategories" runat="server" />

也许当您在 Create 或 Update 方法上恢复您的产品时,它会带有正确归因的 CategoryId 属性,然后您所要做的就是保存 EF 的上下文。祝你好运。

于 2013-01-14T16:49:14.500 回答