0

我mvc4使用實體DB頭(剃刀)填充@ html.listboxfor使用存儲過程

要求:我已經回SP ID和顯示名稱, 我需要顯示在@html名稱。 listboxfor 我用接口從存儲過程中獲取詳細信息。當我從存儲過程中得到控制器的結果時,我將結果保存到列表框, 我無法弄清楚如何將它存儲在列表框中。 我碰到了控制器代碼。請幫忙。

代碼:

public class projService :Iproj 
{ 
    project dbContext; 

    public projService() 
    { 
     dbContext = new projectEntities(); 
    } 

    public List<GetResourceOrderDisplay_Result> Getresorderdisplay() 
    { 
     List<GetResourceOrderDisplay_Result> oGetresorderdisplay = new List<GetResourceOrderDisplay_Result>(); 
     oGetresorderdisplay = dbContext.GetResourceOrderDisplay().ToList(); 
     return oGetresorderdisplay.ToList(); 
    } 
} 

控制器:

public ActionResult testview() 
{ 
    List<GetResourceOrderDisplay_Result> listboxdata = new List<GetResourceOrderDisplay_Result>(); 
    listboxdata = _Scheduler.Getresorderdisplay(); 
    ListboxViewModel objListboxViewModel = new ListboxViewModel(); 

    //struck with the follwing line. 
    objListboxViewModel.resourcename=listboxdata ???? 

    return View(objListboxViewModel); 
} 

視圖:

@model project.ViewModels.ListboxViewModel 
@Html.ListBoxFor(m=> m.resourcename,Model.resourcename, new { @class = "resList",style="height: 462px;"}) 

模型:

public class ListboxViewModel 
{ 
    public string resourceid{get; set; } 
    //listbox Values 
    public List<SelectListItem> resourcename{get; set;} 
} 

編輯:GetResourceOrderDisplay_Result

using System; 
using System.Collections.Generic; 

namespace proj.Data 
{ 
    public partial class GetResourceOrderDisplay_Result 
    { 
     public int ID { get; set; } 
     public string DisplayName { get; set; } 
     } 
    } 

EDIT2: 這是更新後,我發現了錯誤: enter image description here

**Edit 3:** 

enter image description here

回答

2

基本上你需要做什麼將您從數據庫中檢索的列表數據轉換爲List<SelectListItem>因此可以顯示。該LinqSelect方法使這很簡單:

objListboxViewModel.resourcename = 
    listboxdata.Select(x => new SelectListItem() { Text = x.DisplayName, 
                Value = x.ID.ToString() }) 
       .ToList(); 

所以你設置TextValue性能將取決於什麼GetResourceOrderDisplay_Result定義看起來像有什麼樣的特性。在Select方法中,x表示listboxdata列表的單個元素,並且類型爲GetResourceOrderDisplay_Result,因此您可以訪問它的屬性,如x.Property。以這種方式構造的Select方法將返回一個新列表SelectListItem

+0

感謝一噸。如何從sp獲取文本和值的值,同時檢查我的更新。 – gs11111

+1

@ gs11111像這樣'listboxdata.Select(x => new SelectListItem(){Text = x.DisplayName,Value = x.ID});' – asymptoticFault

+0

我在listboxdata :(。請檢查我的更新。 – gs11111

相關問題