2014-02-26 51 views
4

我正在做一些實驗性的編程,以趕上ASP MVC。MVC 5代碼第一個腳手架與簡單的關係

我爲包含房間的建築物創建了一個項目。一個非常簡單的一對多關係。我試圖讓腳手架工作,從舊的MVC例子看來,這應該只是工作。但是,Rooms中的BuildingId字段未映射到Building模型 - 視圖中沒有選擇列表。

我的車型有:

namespace BuildingManagement.Models 
{ 
    public class Building 
    { 
     public int Id { get; set; } 

     [Required] 
     public string Name { get; set; } 
     public string Address { get; set; } 
     public string Street { get; set; } 
     public string City { get; set; } 
     public string Province { get; set; } 
     public string PostalCode { get; set; } 

     [Display(Name = "Phone")] 
     [DataType(DataType.PhoneNumber)] 
     [Required] 
     public string PhoneMain { get; set; } 

     [Display(Name = "Contact")] 
     [Required] 
     public string ContactName { get; set; } 
     public string Description { get; set; } 

     public virtual ICollection<Room> Rooms { get; set; }  

    } 
} 

namespace BuildingManagement.Models 
{ 
    public class Room 
    { 
     public int Id { get; set; } 

     [Required] 
     public string Name { get; set; } 
     public string Type { get; set; } 
     public int BuildingId { get; set; }   
    } 
} 

我生成使用實體框架,它創造的形式,但可以欣賞到控制器不與房間編輯視圖預期號樓選擇列表。它改爲顯示一個整數輸入字段。

我錯過了什麼?

回答

7

你應該改變這樣的:

public class Room 
{ 
    public int Id { get; set; } 

    [Required] 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public int BuildingId { get; set; }   
} 

public class Room 
{ 
    public int Id { get; set; } 

    [Required] 
    public string Name { get; set; } 
    public string Type { get; set; } 

    [ForeignKey("ContainingBuilding")] 
    public int BuildingId { get; set; }  

    public virtual Building ContainingBuilding{ get; set;} 
} 

這樣腳手架將產生建築選擇列表。上述

Model.CountryListItems= new List<SelectListItem>(); 
    CountryListItems.Add(new SelectListItem 
     { 
      Text = "Albania", 
      Value = "1" 
     }); 
    CountryListItems.Add(new SelectListItem 
     { 
      Text = "Bangladesh", 
      Value = "2", 
      Selected = true 
     }); 
    CountryListItems.Add(new SelectListItem 
     { 
      Text = "Canada", 
      Value = "3" 
     }); 

上述樣本代碼

+0

我認爲讓我更接近。現在,我得到一個導航屬性錯誤'類型'FacilityManagement.Models.Room'屬性'BuildingId'上的ForeignKeyAttribute無效。在依賴類型'BuildingManagement.Models.Room'上未找到導航屬性「Building」。名稱值應該是一個有效的導航屬性名稱.' – sreimer

+1

有時候不可能將類和名稱命名爲相同的名稱,正如我在此處顯示的那樣。我會編輯答案。 – Mithrandir

0
public List<SelectListItem> CountryListItems {get; set;} 
public int CountryId {get; set;} 

樣品模型可在控制器或其它發電機模型類一起使用。

@Html.DropDownListFor(model => model.CountryId, model.CountryListItems, "-- Select Status --") 

上面的示例視圖塊。

相關問題