none
Вывод запроса на страницу RRS feed

  • Вопрос

  •             var portal = (from m in db.T_users
                              join sv in db.T_position_users on m.sid equals sv.id_users //связка между таблицами
                              join pos in db.T_positions on sv.id_positions equals pos.id
                              join unit in db.T_units on sv.id_units equals unit.id
                              orderby m.fio descending //сортировка
                              select new { Photo = m.photo, FIO = m.fio, Unit = unit.name, Position = pos.name, Phone = m.phone }).ToList();

    Как данный запрос вывести на страницу? Как по нему составить представление?
    20 февраля 2014 г. 11:10

Ответы

  • для того чтобы отобразить данные на View в МVC для этого используется Model. то есть,для того,чтобы вам отобразить нужно создать некую модель с тем набор свойств,которые вы будете потом выводить.

    class Orders

    {

    public Image Photo {get;set;}

    public string Fio {get;set;}

    public string Unit {get;set;}

    public string Positon {get;set;}

    public string Phone {get;set;}

    }

    в контроллере создаете метод, в котором достаете данные своим запросом и все эти полученные данные нужно,чтобы они были типа модели (Orders), то есть чтобы было List<Orders>(это и будет наша модель). 

    var model= new List<Orders>();

    Далее вы в этом же методе  в return  View() передаете нашу модель данных,в нашем случае будет так - return  this.View(model) ; или если нужно вывести View во View ,то пишем return  this.PartialView(model)

    Далее,чтобы отобразить данные на View мы вверху пишем 

    @model IList<Orders>

    ....

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

    <table>
        <tr>
            <th>Photo 
                </th>
            <th>Fio 
            </th>
            <th>Unit 
            </th>
            <th>Positon 
            </th>
            <th>Phone 
            </th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                  @Html.DisplayFor(modelItem => item.Photo )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Fio )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Unit )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Positon )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Phone )
                </td>
            </tr>
        }
    </table>

    можно так же вывести все через @Html.Grid(this.Model) 

    20 февраля 2014 г. 12:49

Все ответы

  • Разработку веду в MVC
    20 февраля 2014 г. 11:48
  • Нашел на форумах вот такой кусок кода

    var Orders = 
                            from ...
                            join ...
     
                            orderby ...
     
                            select new Order { project = ..., idRegion = ..., ... , idstatus = ...}; 
     
    return View(Orders);

    @model IEnumerable<Namespace.Order>
     ....
     
    @foreach (var x in model)
            {
                 <tr>
                     <td><p>@x.project</p></td>
                     <td><p>@...</p></td>
                     ...
                     <td><p>@...</p></td>
                 </tr>
            }
    строку
    @model IEnumerable<Namespace.Order>

    не могу понять

    20 февраля 2014 г. 12:14
  •             var portal = (from m in db.T_users
                              join sv in db.T_position_users on m.sid equals sv.id_users //связка между таблицами
                              join pos in db.T_positions on sv.id_positions equals pos.id
                              join unit in db.T_units on sv.id_units equals unit.id
                              orderby m.fio descending //сортировка
                              select new { Photo = m.photo, FIO = m.fio, Unit = unit.name, Position = pos.name, Phone = m.phone }).ToList();

    Как данный запрос вывести на страницу? Как по нему составить представление?

    В последней строке своего запроса, вы оформляет результат в виде коллекции экземпляров анонимного класса. Такой результат вы не сможете вернуть из своего метода, так как не сможете указать актуальный тип возвращаемого значения (List<AnonymousClass>). Поэтому вам необходим создать новый класс, например Person, и использовать его для формирования результата запроса, как это сделано в примере, который вы нашли на форумах.

    Пример класса Person и обновленный вариант вашего запроса:

    class Person { public Image Photo {get; set;} public string FIO {get; set;} public string Position {get; set;} public string Phone {get; set;} } class BL { List<Person> GetPortal(){ var portal = (from m in db.T_users join sv in db.T_position_users on m.sid equals sv.id_users //связка между таблицами join pos in db.T_positions on sv.id_positions equals pos.id join unit in db.T_units on sv.id_units equals unit.id orderby m.fio descending //сортировка select new Person { Photo = m.photo, FIO = m.fio, Unit = unit.name, Position = pos.name, Phone = m.phone }).ToList();

    return portal; }

    }

    Далее, результат вызова метода GetPortal вы можете использовать в своей View.
    • Изменено N.Turakulov 20 февраля 2014 г. 12:34
    • Предложено в качестве ответа N.Turakulov 20 февраля 2014 г. 12:34
    20 февраля 2014 г. 12:31
  • для того чтобы отобразить данные на View в МVC для этого используется Model. то есть,для того,чтобы вам отобразить нужно создать некую модель с тем набор свойств,которые вы будете потом выводить.

    class Orders

    {

    public Image Photo {get;set;}

    public string Fio {get;set;}

    public string Unit {get;set;}

    public string Positon {get;set;}

    public string Phone {get;set;}

    }

    в контроллере создаете метод, в котором достаете данные своим запросом и все эти полученные данные нужно,чтобы они были типа модели (Orders), то есть чтобы было List<Orders>(это и будет наша модель). 

    var model= new List<Orders>();

    Далее вы в этом же методе  в return  View() передаете нашу модель данных,в нашем случае будет так - return  this.View(model) ; или если нужно вывести View во View ,то пишем return  this.PartialView(model)

    Далее,чтобы отобразить данные на View мы вверху пишем 

    @model IList<Orders>

    ....

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

    <table>
        <tr>
            <th>Photo 
                </th>
            <th>Fio 
            </th>
            <th>Unit 
            </th>
            <th>Positon 
            </th>
            <th>Phone 
            </th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                  @Html.DisplayFor(modelItem => item.Photo )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Fio )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Unit )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Positon )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Phone )
                </td>
            </tr>
        }
    </table>

    можно так же вывести все через @Html.Grid(this.Model) 

    20 февраля 2014 г. 12:49
  • Можно с вами связаться по скайпу?
    20 февраля 2014 г. 13:06
  • с кем именно ?)
    20 февраля 2014 г. 13:11
  • @model IList<Orders> записать в Inherits?

    20 февраля 2014 г. 13:15
  • смотрите,у вас приходят список данных с БД,вы их передаете на View- return View(данные с БД)

    потом на View вам как то нужно их все вывести. Все что вы передали через контроллер будет содержаться в этой модели,то есть эта модель будет выступать хранилищем ваших данных для того,чтобы их отобразить во View.

    то есть в @model IList<Orders> будут все денные,которые вы передали на View.

    20 февраля 2014 г. 13:23