2014-10-02 2 views
0

드롭 목록과 데이터베이스를 업데이트 할 다른 필드가있는보기를 만듭니다. 모델에는 데이터베이스에 매핑되는 속성과 드롭 다운 목록에 사용되는 일부 속성이 있습니다. 매핑되지 않은 속성은 예외를 throw합니다. 드롭 목록 속성을 매핑하지 않도록하는 좋은 방법이 있습니까? 모델에서 별도의 클래스에 넣으려고했는데 작동하지 않았습니다.데이터베이스에 매핑되지 않은 속성이있는 MVC

모델 :

[Table("cardata")]//Links the external table to this model object 
public class Cardata 
{ 
    //Maps to the database 
    public int id { get; set; } 
    public int dealerID { get; set; } 
    public string model { get; set; } 
    public int numCyl { get; set; } 
    public double weight { get; set; } 


    // UNMAPPED Used for a drop list of car names 
    public string carModel { get; set; } 

    public IEnumerable<SelectListItem> carList 
    { 
     get 
     { 
      cartableContext ctc = new cartableContext(); 

      IEnumerable<SelectListItem> retVal = ctc.cardata.GroupBy(c => c.model).Select(cl => cl.FirstOrDefault()).Select(cars => new SelectListItem { Value = cars.id.ToString(), Text = cars.model.ToString() }); 
      return retVal; 
     } 
     set { } 
    }   
} 
+2

나쁜 연습 (속성에 데이터베이스 액세스 코드가있는 것처럼)! 'SelectList'와 같은 뷰 특정 요소의 속성을 포함하는 뷰 모델을 생성해야합니다. [automapper] (http://automapper.codeplex.com/)와 같은 도구를 사용하여 데이터 모델 속성을 뷰 모델 속성에 매핑 할 수 있습니다. ViewBag에'SelectList'를 추가 할 수도 있습니다. –

답변

0

당신이 [NotMapped] 사용할 수 있을까요?

[NotMapped] 
public string carModel { get; set; } 

[NotMapped] 
public IEnumerable<SelectListItem> carList{...} 
관련 문제