Данные MVC Razor Var - PullRequest
       5

Данные MVC Razor Var

2 голосов
/ 10 июня 2011

Привет, я новичок в MVC3 Razor.

Я пытался отобразить значения из таблицы базы данных.

в контроллере я написал код как

            var test1 = from ed in db.EmpDetails
            join dp in db.Departments on ed.EmpDept equals dp.DeptId
                select new
                {
                    EmpId = ed.EmpId,
                    EmpName = ed.EmpName,
                    EmpDesignation = ed.EmpDesignation,
                    EmpSalary = ed.EmpSalary,
                    EmpUserName =ed.EmpUserName,
                    EmpDept =ed.EmpDept,
                    deptName = dp.deptName
                };

        ViewBag.test = test1; 

и в поле зрения

               @foreach (var tm in ViewBag.test)
                {

                     string abc =@tm.EmpName; 
                     // and the logic
                 }


Here i am getting all the value in the "tm" variable. But when i try to get the particular value of EmpName in a string it is showing the error as "'object' does not contain a definition for 'EmpName'". 

Пожалуйста, помогите мне решить эту ошибку. Спасибо Сан -

Ответы [ 3 ]

1 голос
/ 10 июня 2011

Вы не можете использовать анонимные объекты в представлениях. Попробуйте вот так:

var test1 = 
    from ed in db.EmpDetails
    join dp in db.Departments on ed.EmpDept equals dp.DeptId
    select ed;
ViewBag.test = test1; 

и затем:

@foreach (var tm in (IEnumerable<Employee>)ViewBag.test)
{
    string abc = tm.EmpName; 
    // and the logic
}

Но лично я бы порекомендовал вам использовать строго типизированные представления вместо ViewBag:

var test1 = 
    from ed in db.EmpDetails
    join dp in db.Departments on ed.EmpDept equals dp.DeptId
    select ed;
return View(test1); 

и внутри вида:

@model IEnumerable<Employee>
@foreach (var tm in Model)
{
    string abc = tm.EmpName; 
    // and the logic
}
1 голос
/ 10 июня 2011

К сожалению, анонимные объекты не работают с представлениями.Либо вам нужно вернуть неанонимный вид для просмотра, либо вернуть динамический объект для просмотра.

См .: http://rhizohm.net/irhetoric/post/2011/05/25/Taking-The-M-out-of-MVC-JSON-The-dynamic-Keyword-LINQ-.aspx

0 голосов
/ 15 июня 2011

Я могу получить значения в представлении, если я конвертирую результат linq в toList () в контроллере.

    Like

var test = (из p в db.EmpDetails orderby p.EmpName по возрастанию выберите p) .ToList (); ViewBag.test = test;

    And in the view 

   @foreach (var tm in ViewBag.test)
   {
           int emId = @tm.id;
    }

Спасибо ....

...