пятница, 19 марта 2010 г.

MVC. Выводим в представлениях вместо ID - наименования.

Продолжаем работать над MVC приложением. Конечно при отображении значений полей в записи таблицы,  хотелось бы видеть не идентификаторы-ссылки на другую таблицу ,связанную отношениями, а их смысловые значения. Допустим есть  первичная таблица Printer (Это таблица моделей принтеров).  Вот как выглядит контроллер для отображения этой таблицы .

Function Printer() As ActionResult
Dim Datacontext As New PrintModelDataContext
Dim List = From p In Datacontext.Printer Select p
Return View(List.ToList)
End Function

Потом в одноименном представлении (строго-типизированном) мы в цикле выводим колонки записи таблицы.

<%For Each item In Model%>
<%= Html.Encode(item.Naim) %>
<%= Html.Encode(item.Part_number) %>
<%= Html.Encode(item.Manufactory) %>
<%Next%>

А вот выводим дочернюю таблицу Specific:

Function Specific() As ActionResult
  Dim Datacontext As New PrintModelDataContext
  ViewData("Specific") = _
  From s In Datacontext.Specific, _
    p In Datacontext.Printer, _
    f In Datacontext.Filial _
   Where s.Id_Printer = p.Id And s.Id_Filial = f.Id _
   Select s.Id, s.Inv, s.SN, NaimPrinter = p.Naim,_
    NaimFilial = f.Naim
   Return View()
End Function

В представлении мы уж используем Viewdata("Specific") вместо Model.
В этом случае Intellisense уже вам не подскажет.

<%For Each item In ViewData("Specific")%>
<%=Html.Encode(item.NaimPrinter)%>
<%= Html.Encode(item.SN)%>
<%= Html.Encode(item.Inv)%>
<%=Html.Encode(item.NaimFilial)%>
<% Next%>

Вместо поля числового поля ID_printer Выводиться NaimPrinter из таблицы Printer, вместо ID_Filial - NaimFilial

Комментариев нет:

Отправить комментарий