2013-11-25 3 views
0

내 컨트롤러에 항목 목록이 있습니다. 나는 ViewData["Brand"]에 저장했다.ViewData [ "Brand"]보기에서 데이터에 액세스

제 생각에는 이러한 데이터는 드롭 다운 목록에 숨겨져 있습니다.

목록이 표시됩니다.

이제보기에서 드롭 다운 목록을 선택할 때 선택한 항목 값을 모델에 전달하려고합니다.

ViewData["Brand"]의 항목에 액세스하는 방법.

여기 내 코드입니다.

@Html.DropDownList("BrandName", ViewData["BrandName"] as SelectList, "--Select--", new { onchange = "this.form.submit()" }); 

답변

0

귀속은 항목 나열을 ViewData [한 brandname]에 저장하는

컨트롤러 번호 :

 IList<BrandInfo> brand = new List<BrandInfo>(); 
     int CategoryId = Convert.ToInt32(Request.QueryString["CategoryId"]); 
     productInstance.CategoryId = CategoryId; 
     brand = get****(CategoryId); 
     IList<SelectListItem> BrandNameList = new List<SelectListItem>(); 

     foreach (var item in brand) 
     { 
      SelectListItem sli = new SelectListItem(); 
      sli.Text = item._name; 
      sli.Value = Convert.ToString(item._brandId); 
      if (sli.Value == BrandId.ToString()) 
      { 
       sli.Selected = true; 
      } 
      BrandNameList.Add(sli); 
     } 
     ViewData["BrandName"] = BrandNameList; 

모델 :

public string BrandName { get; set; } 

코드보기 :

@Html.DropDownList("BrandName", ViewData["BrandName"] as SelectList, "-- Select By Brands --") 
0

첫째로 당신은 다른 곳에 DB 또는에서 채워 브랜드의 목록이 될 것입니다 브랜드 즉 _brands의 목록을 다시 전송해야합니다. 위의

var brandId = "1"; 
var brands = _brands.Select(b => new SelectListItem 
      { 
       Value = b.Id.ToString(), 
       Text = b.Name, 
       Selected = brandId.Equals(b.Id.ToString()) 

      }); 

ViewData["BrandId"] = = "1"; 
ViewData["Brands"] = brands; 

중요한 부분은이 목록의 사전 선택을 할 것입니다

Selected = brandId.Equals(b.Id.ToString()); 

.

그런 다음

@Html.DropDownList("BrandId", ViewData["Brands"] as SelectList, "--Select--", new { onchange = "this.form.submit()" });