2017-05-09 60 views
0

我有以下查询。
我想连接两个表并在下拉列表中显示一列。从数据库连接两个表并在MVC的下拉列表中显示一个列值

控制器代码:

// 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

我只希望列值显示在下拉列表中。例如,只应显示“销售”值。

回答

0

你能否将SelectList list = new SelectList (lob, "lobname");的代码改成这样的东西?

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

这意味着你必须要添加LobId原来的选择,像这样

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

编辑:这是假设你想,如果你提交表单,而不是要通过的LobID值LobName。

+1

非常感谢非常错误的工作如预期我需要在下拉列表中的高球名称我相应地修改了代码 – Brijesh

相关问题