0

mvc4(razor) で最初に db を持つエンティティを使用します

要件:IDと表示名を返すspがあります。名前を@ html.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;}
}

編集: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:これは、更新後に発生するエラーです: ここに画像の説明を入力

**Edit 3:**

ここに画像の説明を入力

4

1 に答える 1

2

List<SelectListItem>基本的に必要なことは、データベースから取得したリスト データを表示できるように変換することです。メソッドを使用Linq Selectすると、これが非常に簡単になります。

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

したがって、TextValueプロパティを何に設定するかは、 の定義がどのGetResourceOrderDisplay_Resultように見えるか、およびどのようなプロパティがあるかによって異なります。Selectメソッドでは、はリストxの単一の要素を表し、タイプは であるため、 のようなプロパティにアクセスできます。このように構築されたメソッドは、 の新しいリストを返します。listboxdataGetResourceOrderDisplay_Resultx.PropertySelectSelectListItem

于 2013-08-23T18:44:17.283 に答える