2016-08-27 2 views
-1

Каждый раз, когда я через цикл viewbag он дает эту ошибкуВернуться Список для просмотра

«объект не содержит определение для„Имя“

Это мое действие

public ActionResult AssignTask() 
{ 
    var List = db.Employees.Select(x => new 
    { 
     id = x.id, 
     Name = x.Name 
    }).ToList(); 

    ViewBag.Emp_data = List; 

    return View(); 
} 

и это мой взгляд enter image description here

+0

Ваш пропускании анонимный объект !. Создайте модель представления с этими свойствами и спроецируйте запрос в модель представления. И передайте модель в представление (не используйте 'ViewBag'). И покажите свой код, а не его изображения. –

+0

Прошу прощения, я новичок в переполнении стека, и я не знаю, как разместить код HTML в текстовой области. –

+0

. Вы копируете код в своем представлении (код на картинке) в вопрос, так же, как вы сделали для кода контроллера –

ответ

2

Этот код возвращает List<anonymous>

var List = db.Employees.Select(x => new 
{ 
    id = x.id, 
    Name = x.Name 
}).ToList(); 

так вот почему вы не можете получить доступ к Name собственности в foreach цикле в вашем представлении.

Я бы предложил использовать строго типизированный класс ViewModel для хранения данных и избежания ViewBag. ViewModel должны находиться в папке Models и выглядеть, как показано ниже

public class EmployeeViewModel 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

Изменение контроллера, как показано ниже

public ActionResult AssignTask() 
{ 
    var model = db.Employees.Select(x => new EmployeeViewModel 
    { 
     ID = x.id, 
     Name = x.Name 
    }).ToList(); 

    return View(model); 
} 

и на ваш взгляд

@model List<EmployeeViewModel> 

<h2>AssignTask</h2> 
<div class="row"> 
    <div class="form-group"> 
     <div style="overflow-y:scroll; overflow-x:hidden; height:400px;"> 
      @foreach (var item in Model) 
      { 
       <div class="col-lg-4 col-md-4"> 
        <label>@item.Name</label> 
        <input type="checkbox" class="checkbox" name="SelectEmp" value="@item.ID" /> 
       </div> 
      } 
     </div> 
    </div> 
</div> 
1

Вы используете анонимный тип, о котором вид не знает. Вы должны по-прежнему использовать свой Employee класс в ваш выбор:

var List = db.Employees.Select(x => new Employee 
    { 
    id=x.id,Name=x.Name 
    }).ToList(); 

Кстати, вы должны использовать View Model вместо viewbag для переноса данных.

Смежные вопросы