2011-05-12 32 views
0
using (var db = new PNUBOOKIR.Models.KowsarSiteEntities()) 
     { 
      var q = (from m in db.GoodTypes 
        select new 
        { 
         GroupCode = m.GroupCode, 
         Text = m.Text 
        }).ToList(); 

     }   

我如何設置它在下拉列表GroupCode作爲值和文本作爲ItemText我怎麼能在mvc 3.0中做到這一點?設置在mvc 3.0 Dropdownlist

補充:

 public ActionResult Index() 
    { 
     using (var db = new PNUBOOKIR.Models.KowsarSiteEntities()) 
     { 
      var q = from m in db.GoodTypes 
        where !m.GroupCode.Equals(null) && !m.Text.Equals(string.Empty) && !m.Text.Equals(null) 
        select new 
        { 
         GroupCode = m.GroupCode, 
         Text = m.Text 
        }; 
      ViewData["list"] = q.ToList().Select(t => new SelectListItem() 
          { 
           Text = t.Text, 
           Value = t.GroupCode.ToString(), 
           Selected = true 
          }); 
     }  
     return View(); 
    } 

    <div> 
     @using (Html.BeginForm()) 
     { 

      System.Collections.IEnumerable ien = (System.Collections.IEnumerable)ViewData["list"]; 
      Html.DropDownList("lstGoodTypes", new SelectList(ien, "Value", "Text")); 

     } 
    </div> 

它的工作原理,但有在結果沒有下拉列表沒有錯誤,並且沒有DROPDOWNLIST很是涼爽。

+0

我發現它解決了@ Html.Dropdownlist在一行中工作,它不能在塊中工作。 – kamiar3001 2011-05-12 07:11:49

回答

1

在你的控制器,你可以這樣做:

ViewData["list"]=q.Select(t=>new SelectListItem 
           { 
            Text=t.Text, 
            Value=t.GroupCode, 
            Selected=<Here you have to return a boolean to decide if the item is selected> 
            }); 

而且在你看來,你可以添加這一種形式:

@Html.DropDownList("list") 

在表單的POST方法,你需要有一個參數命名爲與GroupCode相同類型的列表並對其進行相應處理。

+0

它給了我例外:ObjectContext實例已被處置,不能再用於需要連接的操作。 – kamiar3001 2011-05-12 06:15:11

+2

添加.ToList()到Select語句 - 以這種方式在ViewData [「list」]中,您將擁有對象列表,而不是在視圖中執行的linq查詢 – 2011-05-12 06:35:50

+0

是的,Rafal是對的。在處理ObjectContext之前,您必須執行查詢。你可以使用ToList方法來枚舉序列。 – 2011-05-12 06:40:42