2014-10-22 90 views
0

我收到一个异常,当我试图显示viewbag的值。我加入了两个表格,并使用Linq将这些数据存储在viewbag中。'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException''object'不包含'intEmployeeId'的定义

这是我的控制器的操作方法

public ActionResult HRSeparationDetails() 
    { 
     //List<trnEsSeparationDetail> separationlist = (from list in db.trnEsSeparationDetails 
     //            select list).ToList(); 


     ViewBag.SeparationList = (from list in db.trnEsSeparationDetails 
                 join R in db.mstEsEmpReasonForSeparations 
                  on list.ReasonForSeperationId equals R.intSeperationId 
                 select new 
                 { 
                  intEmployeeId = list.intEmpId, 
                  ReasonForSeparation = R.txtReasonForSeperation, 
                  ResiganationDate = list.dtResignationDate, 
                  RelievingDate = list.dtRequestedRelievingDate, 
                  SeparationRemarks = list.txtRemark 
                 }).ToList(); 

     return View(); 
    } 

这是我的ViewPage

 @model IEnumerable<EMPApp.Models.trnEsSeparationDetail> 
    @{ 
    ViewBag.Title = "HRSeparationDetails"; 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 

     <h2>HRSeparationDetails</h2> 
     <div> 
    @if (ViewBag.SeparationList == null) 
    { 
     <div style="color:green"><h3>@ViewBag.SeparationerrorMessage</h3></div> 
    } 
    else 
    { 
     <table class="grid" cellpadding="0" cellspacing="0"> 
      <tr> 
       <th> 
        <b>Employee Id</b> 
       </th> 
       @*<th> 
        <b>ReasonForSeparationId</b> 
       </th>*@ 
       <th> 
        <b>Reason For Separation</b> 
       </th> 
       <th> 
        <b>Resignation Date</b> 
       </th> 
       <th> 
        <b>Relieving Date</b> 
       </th> 
       <th> 
        <b>Separation Remarks</b> 
       </th> 
      </tr> 
      @foreach (var item in ViewBag.SeparationList) 
      { 
       <tr> 
        <td> 
         @item.intEmployeeId 
         @*@{ 
          Session["SeparationEmpId"] = item.intEmpId; 
         } 
         @Html.ActionLink(Session["SeparationEmpId"].ToString(), "EmployeeDashboard", "HRAdmin", new { id = @item.intEmpId }, null)*@ 
        </td> 
        @*<td> 
         @item.ReasonForSeperationId 
        </td>*@ 
        <td> 
         @item.ReasonForSeparation 
        </td> 
        <td> 
         @item.ResiganationDate 
        </td> 
        <td> 
         @item.RelievingDate 
        </td> 
        <td> 
         @item.SeparationRemarks 
        </td> 
       </tr> 
      } 
     </table> 
    } 

任何帮助将不胜感激。谢谢..

回答

0

ViewBag是一个动态对象,您将属性设置为匿名对象的集合。在你foreach循环

@foreach (var item in ViewBag.SeparationList) 

产品的typeof objectobject没有(你在匿名对象定义其他属性或任何)属性intEmployeeId。处理这一种方法是创建要显示

public class SeparationDetailVM 
{ 
    public int intEmployeeId { get; set; } 
    public DateTime ResiganationDate { get; set; } 
    .... 
} 

的属性,并在控制器

var details = (from list in .... 
       select new SeparationDetailVM 
       { 
        intEmployeeId = list.intEmpId, 
        ResiganationDate = list.dtResignationDate, 
        .... 
       }).AsEnumerable(); 
return View(details); // no need for ViewBag 

,并在视图

@model IEnumerable<YourAssembly.SeparationDetailVM> 
.... 
@foreach (var item in Model) 
{ 
    .... 
    <td>@item.intEmployeeId</td> 
    <td>@item.ResiganationDate</td> 
    .... 
} 
+0

非常感谢先生视图模型..其工作很好.. – user3273883 2014-10-22 06:29:07

+0

然后我假设你会接受它。你已经提出了12个问题,并没有接受一个问题,尽管注意到在另外3个工作中对你有用。不是很好的形式! – 2014-10-22 07:50:23

+0

@StephenMuecke正确的先生,我认为我们应该避免帮助这种类型的用户。 – Roshan 2014-10-22 19:53:08

相关问题