2017-05-09 4 views
0

以下のクエリがあります。
2つのテーブルを結合し、その1つの列をドロップダウンリストに表示したいとします。データベースから2つのテーブルを結合し、MVCのドロップダウンリストに1列の値を表示

コントローラコード:

// GET: SelectLLD 
public ActionResult Index() 
{ 

    var sLoginName = Session["LoginName"]; 
    var iLoginId = Session["LoginID"]; 

    if(sLoginName!= null) 
    { 
     ViewBag.LoginId = iLoginId; 


     //Db context object 
     enterpriseEntities db = new enterpriseEntities(); 

     var lob = from l in db.Lobs 
        join r in db.Rights 
        on l.LobID equals r.LobID 
        //where r.LoginID = 
        select new 
        { 
         l.LobName 

        }; 
     SelectList list = new SelectList (lob, "lobname"); 

     ViewBag.LobNames = list; 
     return View(); 

    } 
    else{ 

     return RedirectToAction("Index", "Login"); 
    } 


} 

ビューコード:

@{ 
    ViewBag.Title = "Index"; 
} 
<h4>Welcome @Session["LoginName"]</h4> 
<h4>@ViewBag.LoginId</h4> 
<h3>Select LOB</h3> 

<div> 
    @Html.DropDownList("LobNames", "Select a Value") 
</div> 
<h3>Select Bussiness Date </h3> 

問題は、上記のコードで私はまたドロップの列の値が付加された列名を取得することですダウンリスト。 以下はスクリーンショットです

私は外にカラム名と値を持っています。 i am getting the out having column name and the value

ドロップダウンには列の値のみを表示します。たとえば、 "Sales"値のみが表示されます。

答えて

0

SelectList list = new SelectList (lob, "lobname");コードをこのように変更できますか?

var list = logb.Select(x => new SelectListItem { 
      Value = x.LobID.ToString(), 
      Text = x.LobName 
     }).ToList(); 

これは、あなたがそう

var lob = from l in db.Lobs 
        join r in db.Rights 
        on l.LobID equals r.LobID 
        //where r.LoginID = 
        select new 
        { 
         LobName = l.LobName, 
         LobID = L.LobID 
        }; 

EDITのように選択し、元にLobIdを追加する必要がいる意味します:あなたがフォームを送信していない場合、これはあなたがLobID値を渡すことにしたいと仮定していますLobName。

+1

ありがとうございました期待どおりに動作しませんでした。ドロップダウンリストにロブ名が必要でした。これに応じてコードを修正しました – Brijesh

関連する問題