2013-09-29 30 views
1

在我PageModels我:DropDownListFor()與自參照表指定父

public class Page : BaseModel 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int PageID { get; set; } 
    public int? ParentID { get; set; } 
    public string Name { get; set; } 

    public virtual Page Parent { get; set; } 
    public virtual ICollection<Page> Children { get; set; } 

    public Page() 
    { 
     this.Order = 0; 
     this.Live = false; 
    } 
} 

public class CommodityPageMap : EntityTypeConfiguration<Page> 
{ 
    public CommodityPageMap() 
    { 
     HasOptional(x => x.Parent) 
      .WithMany(x => x.Children) 
      .HasForeignKey(x => x.ParentID) 
      .WillCascadeOnDelete(false); 
    } 
} 

我希望能夠做的是有一個下降在我看來下來,當選擇集的PARENTID我模型。我不知道如何使用DropDownListFor,這將直接與我的模型相關聯。

請問有人能指點我正確的方向嗎?

回答

1

設置ParentID只是一個整數,所以在下拉列表中的值是可以正常工作的整數。

我想你真正要問的問題是如何得到這個下拉列表可能的整數列表?

您的模型應該有一個返回該列表的屬性。事情如此簡單:

public IDictionary<int, string> PossibleParents 
{ 
    get 
    { 
     // query the database for possible parents 
     // return the list of IDs and names 
    } 
} 

然後在您的視圖你會使用該屬性來填充下拉列表:

@Html.DropDownListFor(x => x.ParentID, new SelectList(Model.PossibleParents, "Key", "Value")) 
+0

豔光四射,這確實是我的意思。非常感謝你的協助。 – webnoob