2017-04-05 69 views
-1

我有@ Html.DropDownList从控制器在编辑模式下的数据。我需要隐藏DropDown元素,并显示一些消息,如果列表为空或空。如何隐藏@ Html.DropDownList如果ViewBag为空或空

我尝试用这个代码视图,但所有的时间给我造成泰德拥有,并显示空的下拉菜单:

@if(ViewBag.DatumRID != null) 
       { 
        <div class="col-md-10"> 
         @Html.DropDownList("DatumRID", null, htmlAttributes: new { @class = "form-control" }) 
         @Html.ValidationMessageFor(model => model.DatumRID, "", new { @class = "text-danger" }) 
        </div> 
       } 
       else 
       { 
        <h6 style="color:#ff0000"> NO RECORDS.</h6> 
       } 

而且从控制器代码是在这里:

ViewBag.DatumRID = new SelectList(db.tbl_relacii.Where(x => x.DatumR == tbl_rezervacii.DatumP).OrderBy(x => x.DatumR), "relID", "DatumForDisplay", tbl_rezervacii.DatumRID); 

时记录fount下拉菜单可以,但是当记录为空时,下拉列表显示为空。

+0

代替ViewBag.DatumRID使用模型:Model.DatumRID在模型上设置列表 –

+0

控制器中的代码正在创建一个“SelectList” - 它不能为null,只是空的。 - 'var data = db.tbl_relacii.Where(....); if(data.Any()){ViewBag.DatumRID = new SelectList(...); }' –

+0

谢谢@Stephen Muecke它的工作。 –

回答

0

查看列表大小还。为了正确显示数据,SelectList必须包含多于零个项目。试试这个:

@if(ViewBag.DatumRID != null && ViewBag.DatumRID.Count > 0) 
{ 
     <div class="col-md-10"> 
      @Html.DropDownList("DatumRID", null, htmlAttributes: new { @class = "form-control" }) 
      @Html.ValidationMessageFor(model => model.DatumRID, "", new { @class = "text-danger" }) 
     </div> 
} 
else 
{ 
     <h6 style="color:#ff0000"> NO RECORDS.</h6> 
} 

更新: U可以尝试更新你这样的控制器代码:

List<SelectListItem> viewList = new List<SelectListItem>(); 
    viewList.AddRange(new SelectList(db.tbl_relacii.Where(x => x.DatumR == tbl_rezervacii.DatumP).OrderBy(x => x.DatumR), "relID", "DatumForDisplay", tbl_rezervacii.DatumRID)); 
    ViewBag.DatumRID = viewList; 

又通 “Viewlist产品” 对象为DropDownList助手在剃刀标记。

+0

我有这个错误**'System.Web.Mvc.SelectList'不包含'Count'的定义**在行:'@if(ViewBag.DatumRID!= null && ViewBag.DatumRID.Count> 0)' –