Обертывание & lt; ol & gt; списки в & lt; p & gt; тег [дубликат]

Добавление случая, когда имя класса для объекта, используемого в структуре сущности, такое же, как имя класса для файла с кодировкой веб-формы.

Предположим, у вас есть веб-форма Contact.aspx, чей класс codebehind Свяжитесь с вами, и у вас есть имя объекта Contact.

Затем следующий код вызовет исключение NullReferenceException при вызове context.SaveChanges ()

Contact contact = new Contact { Name = "Abhinav"};
var context = new DataContext();
context.Contacts.Add(contact);
context.SaveChanges(); // NullReferenceException at this line

Ради полноты класса DataContext

public class DataContext : DbContext 
{
    public DbSet Contacts {get; set;}
}

и класс сущности контакта. Иногда классы сущностей являются частичными классами, так что вы можете распространять их и в других файлах.

public partial class Contact 
{
    public string Name {get; set;}
}

Ошибка возникает, когда оба класса entity и codebehind находятся в одном и том же пространстве имен. Чтобы исправить это, переименуйте класс сущности или класс codebehind для Contact.aspx.

Причина. Я все еще не уверен в причине. Но всякий раз, когда какой-либо из классов сущностей расширяет System.Web.UI.Page, возникает эта ошибка.

Для обсуждения рассмотрим NullReferenceException в DbContext.saveChanges ()

10
задан Zee 7 July 2010 в 02:38
поделиться

5 ответов

Пункты в HTML 5, относящиеся к последнему рабочему проекту, определяются как элементы потока, которые могут содержать только фразирующие элементы. Списки также определяются как элементы потока и не могут быть заключены в параграфы. Что бы вы ни думали, определение параграфа должно быть, это формальное определение термина в HTML, и я думаю, что это вряд ли изменится.

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

  • Рассмотрите возможность достижения более широкомасштабного элемента потока, чем абзац, если он применяется, например section, nav, header, footer или article .
  • Используйте гибридный подход: заверните последовательность p – ol – p с помощью div по вашему выбору, который применяет общее форматирование к набору.

Что касается div, спецификатор HTML 5 явно рекомендует, чтобы он был элементом «последней инстанции», поскольку он не несет семантического значения в том, как это делают другие элементы HTML, и может быть не таким удобным для пользователей в альтернативных пользовательских агентах. Следуя этим советам, я бы не использовал div за счет p для основного текста, если семантика важна для вас. Однако, это может быть полезно, чтобы убедиться, что использование нескольких абзацев не слишком визуально изменено.

9
ответ дан Owen S. 29 August 2018 в 02:13
поделиться
  • 1
    Ситуация, с которой я столкнулся, - это система для генерации HTML, и кажется, что наилучшим вариантом в этом случае является использование div s. Кроме этого, предложение использовать более широкие теги также кажется хорошей идеей. – Zee 7 July 2010 в 04:14

Есть ли причина визуального стиля? Другими словами, если у вас есть что-то вроде следующего, визуально ли оно визуализируется таким образом, что вы не найдете идеального?

<p>Some paragraph text.</p>
<ul>
    <li>First list item</li>
    <li>Second list item</li>
    <li>Third list item</li>
</ul>
<p>Another paragraph.</p>

Если проблема имеет слишком большое значение после P и перед UL, то вы можете попробовать смежный селектор, подобный этому, чтобы компенсировать:

p + ul { margin-top: -1em; }
3
ответ дан Andy Ford 29 August 2018 в 02:13
поделиться
  • 1
    Визуальный рендеринг не был проблемой (в любом случае, divs отлично работает) - это была попытка найти некоторые «правильные». способ сделать это, сохраняя теги значимыми. – Zee 7 July 2010 в 09:11

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

0
ответ дан casablanca 29 August 2018 в 02:13
поделиться
  • 1
    Скорее всего, этот список является частью предыдущего текста (и я знаю, что не будет никакой разницы в том, как он выглядит, но я пытаюсь выяснить, что правильно ...). – Zee 7 July 2010 в 03:11

Я не думаю, что тэг html <p> предназначен для управления идиомами реальных стилей записи. Это простой способ отображения фрагмента текста упорядоченным образом. Я не думаю, что он предназначен для имитации печатных материалов. Вам нужно будет использовать Div для этого.

3
ответ дан John 29 August 2018 в 02:13
поделиться
  • 1
    Если это только для форматирования, то, похоже, очень мало смысла использовать тег p в любом случае ... Но я уверен, что видел некоторые упоминания о браузерах, которые относились к ним по-другому, но я не помните, где. (Возможно, что-то связано с программами для чтения с экрана). – Zee 7 July 2010 в 03:08
  • 2
    Некоторые из них могут справиться с этим по-разному, но вы никогда не захотите ставить перед собой какие-либо качества своей работы над этими последствиями. Вы всегда, всегда, хотите стрелять по средней земле; тем больше пользователей вы можете сделать счастливым, чем лучше ваш сайт будет. – John 7 July 2010 в 03:38
  • 3
    Именно - и именно поэтому я задал вопрос ... – Zee 7 July 2010 в 04:02
  • 4
    Согласно спецификации HTML 4.01 абзац является встроенным элементом. Вот почему они не хотят гнездования. – John 7 July 2010 в 04:21

Я полагаю, это зависит от того, что вы считаете «абзацем». Для меня очевидно, что разработчики HTML никоим образом не рассматривают список как часть абзаца. И хотя я думаю, что может быть аргумент в пользу любой интерпретации, я считаю, что спецификация верна.

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

В том же духе абзац представляет собой логический раздел в части письма. Список представляет собой последовательность логических разделов, и хотя можно представить, что один логический раздел может быть затем разделен на большее количество разделов, имеет смысл просто создать новый раздел (особенно для такого большого разрыва в голосе / методе).

Семантика может быть в значительной степени субъективной. И это нормально. Однако в этом случае я считаю, что спецификация HTML правильно представляет семантику.

1
ответ дан Ryan Kinal 29 August 2018 в 02:13
поделиться
  • 1
    Ну, я специально избегал обсуждать, является ли это правильным решением или нет - более того, я не считаю, что авторы спецификации HTML должны быть в положении, где они определяют, является ли список -а-абзац - это то, что должно быть разрешено или нет. Это требует тщательного изучения типографских работ в разных культурах, и, конечно же, существует множество примеров типографских систем (La / TeX является очевидным), которые допускают вложенные списки в параграфах. – Zee 7 July 2010 в 04:06
  • 2
    Я полагаю, что легкий ответ на ваш вопрос «нет». – Ryan Kinal 7 July 2010 в 04:09
  • 3
    Кстати, лично я считаю, что если ответ официальной спецификации заключается в том, что вы не должны писать список внутри абзаца, потому что это неправильно, и если не было такого тщательного расследования (которое авторы Юникода вкладывают массу времени), тогда это просто высокомерие. Вот почему я ожидаю, что фактический ответ будет основан на технических проблемах рендеринга и презентации, а не на то, чтобы решить, что следует считать хорошим стилем. – Zee 7 July 2010 в 04:10
  • 4
    @Zee: Я предполагаю, что наследие является движущим фактором на данный момент, на самом деле, должен ли p содержать списки или нет. Понятие о том, что ul и ol должно подразумевать разрыв абзаца, полностью возвращается к HTML 1.2. – Owen S. 7 July 2010 в 09:16
Другие вопросы по тегам:

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