0

지금이 작업을 수행 할 수있었습니다. 예상했던대로 내가 만든 것보다 더 간단했습니다. 다행히도 이것은 나중에 같은 일을하는 사람을 구할 수 있습니다. 아래 코드를 작업 코드로 수정했습니다.Db 데이터로 드롭 다운 상자 채우기

모두에게 감사드립니다.

부분보기 반환 드롭 다운 :

@model Project.Models.Item 

    @Html.DropDownListFor(m=>m.CategoryId,new SelectList(ViewBag.CategoryList,"CategoryId","CategoryName"),"Select") 

컨트롤러 :

[HttpGet] 
    public ActionResult Create() 
    { 
     ViewBag.CategoryList = db.Categorys.ToList(); 
     ViewBag.DesignerList = db.Designers.ToList(); 

     return View(); 
    } 

항목 모델 :

public class Item 
{ 

    public Item() 
    { 
     this.Images = new List<Image>(); 
    } 

    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    [ScaffoldColumn(false)] 
    public int ItemId { get; set; } 

    public int CategoryId { get; set; } 
    public int DesignerId { get; set; } 
    public int ImageId { get; set; } 

    [Required(ErrorMessage="Please Enter the Items Name ")] 
    [StringLength(150,MinimumLength=2)] 
    public string ItemName { get; set; } 
    [Required(ErrorMessage = "Price Cannot be Negative ")] 
    [Range(0,999999.99)] 
    public decimal ItemPrice { get; set; } 
    [StringLength(1000,MinimumLength=2)] 
    public string ItemDescription { get; set; } 
    [Range(4,22)] 
    public int ItemSize { get; set; } 

    //Files Being Uploaded by the User 
    public HttpPostedFileBase[] Files { get; set; } 

    public virtual Category Category { get; set; } 
    public virtual Designer Designer { get; set; } 

    public virtual List<OrderDetail> OrderDetails { get; set; } 
    public virtual List<Image> Images { get; set; } 
} 

분류 모델 :

public class Category 
    { 

     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     [ScaffoldColumn(false)] 
     public int CategoryId { get; set; } 

     [Required(ErrorMessage="Must Supply a Category")] 
     [StringLength(250,MinimumLength=1)] 
     public string CategoryName { get; set; } 
} 

답변

1

코드에 뭔가 빠졌는지 모르겠지만 ViewBag.Categories 컬렉션을 채우는 코드를 볼 수 없습니다. documentation에서 두 번째 매개 변수는 SelectListItem 개체의 Collection (IEnumerable)에 대한 자세한 내용은 개체 개체의 SelectList 컬렉션을 갖는 것보다 더 중요합니다. 이로 인해 드롭 다운 컨트롤을 채우는 데 문제가 발생합니다.

다음 주목해야 할 점은 첫 번째 매개 변수 (표현식)가 Category 객체를 선택한다는 것입니다. Value (Key) 및 텍스트 만 저장하는 선택 목록으로는 불가능하다고 생각합니다. 현재 'SelectedCategory'

0

확인이 코드 같은 이름의 정수 속성을 그것이 당신의 데시벨 값으로 컨트롤러 설정 ViewBag.Categories에도

@Html.DropDownListFor(model=>model.Category.CategoryName,ViewBag.Categories as SelectList,"-- Select Category--") 

해야 사용해야합니다.

관련 문제