Как изменить значение объекта в EntityFramework до его отображения на веб-странице? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть веб-страница веб-форм ASP. NET, которая отображает сетку данных, извлеченных из базы данных с помощью EntityFramework и привязки модели. Однако бывают случаи, когда я использую sh, чтобы переопределить отображаемую информацию в зависимости от значения одного из полей в данных. Так, например, если поле hideme истинно, я хочу заменить имя человека на «Утащено» вместо отображения «Joe Bloggs», которое является значением, хранящимся в базе данных. Примечание: я не хочу изменять значение, хранящееся в базе данных, я просто хочу перехватить его на пути к веб-странице и изменить его значение.

Сетка TemplateField веб-страницы выглядит так:

<asp:TemplateField HeaderText="Company" SortExpression="">
    <ItemTemplate>
      <asp:Label ID="Label6" runat="server" Text='<%# Item.VehicleKeeper.Name %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

Код программной части выглядит примерно так (извините, это VB!):

Public Function VehicleGrid_GetData(sender As Object, e As EventArgs) As IQueryable(Of VehicleKeeperCollection)        Dim mycontext = New RecallContainer()
    Dim myreg As String = "AB01CDE"
    Dim Q1 As IQueryable(Of VehicleKeeperCollection) = From vk In mycontext.VehicleKeeperCollections
                 Select vk
    Q1 = Q1.Where(Function(x) x.Vehicle.Reg = myreg)
    Return Q1
End Function

Это возвращает набор данных, содержащий, среди прочего, VehicleKeeperCollection.VehicleKeeper.Name и VehicleKeeperCollection. VehicleKeeper.HideMe

Итак, что я хочу сделать, это изменить значение VehicleKeeperCollection.VehicleKeeper.Name на «Withheld», если значение VehicleKeeperCollection.VehicleKeeper.HideMe истинно.

ModelBinding для сетка требует, чтобы объект, который я возвращаю, относился к классу «VehicleKeeperCollection», и я думал, что смогу выполнить результирующий запрос к оцениваемым объектам, но я даже, кажется, не могу это сделать и сохранить тип класса. В приведенном ниже коде не удается преобразовать новый объект в класс VehicleKeeperCollection

Dim mynewquery1 As IQueryable(Of VehicleKeeperCollection) = From q In Q1 Select New With 
 {.id = q.id, .VehicleKeeperId = q.VehicleKeeperId, .VehicleId = q.VehicleId, .Vehicle = q.Vehicle, .VehicleKeeper = q.VehicleKeeper}

Любые указатели на то, как я добиваюсь того, что я хочу с благодарностью получить, это не моя область знаний, и я борюсь ! Спасибо

...