Пейджинг в Entity Framework

Хранитель W3C HTML Checker здесь. Проблема заключается в том, что у вас в вашем HTML есть байт ` (backtick), в строке после тега начала <audio controls> и перед началом тега <source src="/audio1/horse.ogg" type="audio/ogg">.

Удалите это ` символ и ошибка исчезнет.


Объяснение

Причина, по которой валидатор показывает, что сообщение об ошибке в этом случае состоит в том, что когда он видит этот символ `, он интерпретирует это как текстовый контент (резервный контент), чтобы показывать пользователям в браузерах, которые не поддерживают элемент audio; то есть то же, что и текст «Your browser does not support the audio element» в фрагменте в вопросе.

Но если элемент audio имеет такой текстовый контент, тогда правила в спецификации HTML определяют, что нет элементов разрешено следовать этому текстовому контенту. Поэтому, когда контролер видит элемент source в этом случае, он выдает сообщение об ошибке, указывающее, что элемент source не разрешен.

Извините, что проверитель не дает лучшего сообщения об ошибке здесь, чтобы помочь вам определить проблему; например, было бы намного лучше, если бы он сказал что-то вроде:

Элемент source здесь не разрешен, потому что этот элемент audio уже имеет текстовое содержимое (`); удалите текстовое содержимое или переместите его, чтобы следовать за элементом source.

Но текущий дизайн кода для проверки делает очень трудным заставить его создать более полезную подробную ошибку сообщение подобный.

30
задан dev 26 June 2009 в 15:39
поделиться

3 ответа

Hmmm... the actual call that uses paging is the second one - that's a single call.

The second call is to determine the total number of rows - that's quite a different operation, and I am not aware of any way you could combine those two distinct operations into a single database call with the Entity Framework.

Question is: do you really need the total number of rows? What for? Is that worth a second database call or not?

Another option you would have is to use the EntityObjectSource (in ASP.NET) and then bind this to e.g. a GridView, and enable AllowPaging and AllowSorting etc. on the GridView, and let the ASP.NET runtime handle all the nitty-gritty work of retrieving the appropriate data page and displaying it.

Marc

5
ответ дан 27 November 2019 в 23:57
поделиться

Использование Esql и сопоставление хранимой процедуры с сущностью может решить проблему. SP вернет totalRows в качестве выходного параметра и текущую страницу в качестве набора результатов.

CREATE PROCEDURE getPagedList(
@PageNumber int,
@PageSize int,
@totalRecordCount int OUTPUT
AS

//Return paged records

Пожалуйста, сообщите.

Спасибо.

8
ответ дан 27 November 2019 в 23:57
поделиться

Что не так с двумя звонками? Это небольшие и быстрые запросы. Базы данных предназначены для поддержки множества небольших запросов.

Разработка сложного решения для выполнения одного запроса на пейджинг не принесет вам больших результатов.

36
ответ дан 27 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: