2011-04-04 58 views
1

似乎的是一個愚蠢的問題,但在這裏我去...加載部分類

我有一個表內的商店從數據庫項目列表(已加在我的.edmx文件),我創建了一個

[MetadataType(typeof(ShopsMetaData))] 
public partial class Shops 
{ 

} 

public class ShopsMetaData 
{ 
    [HiddenInput(DisplayValue = false)] 
    public int ID { get; set; } 

    [Display(Name = "Shop name")] 
    [Required(ErrorMessage = "The field shop name can't be empty")] 
    public string ShopName { get; set; } 

    [Required(ErrorMessage = "The field address can't be empty")] 
    public string Address { get; set; } 

    [Display(Name = "State")] 
    [Required(ErrorMessage = "The field state can't be empty")] 
    public string State { get; set; } 
} 

的問題是在「國家」屬性:我可以簡單地留下一個文本框和人可以鍵入該州的縮寫,但是,爲了添加驗證的東西,導致某事像這樣局部類商店不會那麼明智。我可以把預定義狀態的下拉列表,但我需要從數據庫中獲取它們。

有沒有什麼辦法可以從這個類內的數據庫中使用可測試代碼獲取狀態列表?

回答

4

我一般做的是,在我的行動我設置一個動態屬性持有國這樣的名單:

ViewBag.States = (from state in context.States 
        select new SelectListItem {   
           Text = state.Name, 
           Value = state.Id.ToString()} 
       ).ToList(); 

然後我查看看起來像這樣

<div class="editor-label"> 
    @Html.LabelFor(model => model.State) 
</div> 
<div class="editor-field"> 
    @Html.DropDownListFor(model => model.State, (IList<SelectListItem>)ViewBag.States) 
</div> 

這假定您的模型包含State屬性。

+1

這是最好的方法。 – tugberk 2011-04-04 10:53:36

+0

完美!謝謝! – 2011-04-04 12:18:43