0

я использую объект с дб первым в mvc4 (бритва)заселить @ html.listboxfor с помощью хранимой процедуры

Требование: Я зр возвращающегося ID и отображаемое имя, мне нужно, чтобы отобразить имена в @html. listboxfor Я использовал интерфейс, чтобы получить информацию из хранимой процедуры. Когда я получаю результат в контроллере из хранимой процедуры, я попал в сохранение результата в listbox, Я не мог понять, как сохранить его в списке. Я попал в код контроллера. Пожалуйста, помогите.

Код:

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;} 
} 

Edit: 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(); 

Так что вы установили Text и Value свойства будут зависеть от того, что определение GetResourceOrderDisplay_Result выглядит и какими свойствами она обладает. В методе Selectx представляет собой единственный элемент списка listboxdata и имеет тип GetResourceOrderDisplay_Result, поэтому вы можете получить доступ к его свойствам, например x.Property. Созданный таким образом метод Select вернет новый список SelectListItem.

+0

спасибо тонну. как получить значения в текст и значение из sp, Также проверьте мое обновление. – gs11111

+1

@ gs11111 Как этот 'listboxdata.Select (x => новый SelectListItem() {Text = x.DisplayName, Value = x.ID});' – asymptoticFault

+0

Я получаю сообщение об ошибке рядом с listboxdata :(Пожалуйста, проверьте мое обновление – gs11111

Смежные вопросы