HTTP - правильный ответ сценария ошибки [дубликат]

Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена ​​в нуль (т. е. она не ссылалась на экземпляр фактического объекта).

Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для null перед тем, как использовать.

if (myvar != null)
{
    // Go ahead and use myvar
    myvar.property = ...
}
else
{
    // Whoops! myvar is null and cannot be used without first
    // assigning it to an instance reference
    // Attempting to use myvar here will result in NullReferenceException
}
27
задан AakashM 3 October 2011 в 12:12
поделиться

5 ответов

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

11
ответ дан Willie Wheeler 28 August 2018 в 02:45
поделиться

Как и другие ответы, используйте только шаблон Post / Redirect / Get при успешной проверке на стороне сервера. Если форма недействительна, просто ответьте на ответ напрямую, с сообщениями об ошибках.

Для удобства использования вы должны убедиться, что проверка на стороне клиента отличная, это хорошая идея любым способом, поскольку пользователям нравится немедленная обратная связь. Используйте Javascript или новые функции формы HTML5 , такие как атрибут required или атрибут maxlength или type="email" и т. Д.

Конечно, вы все равно должны иметь проверку на стороне сервера для обеспечения безопасности и для грамотного деградации.

2
ответ дан Flimm 28 August 2018 в 02:45
поделиться

Если URL-адрес, используемый для заполнения формы, является формой POST-сообщений формы, я не думаю, что есть проблема. Если вход действителен, переадресация и GET. Если это недействительно, повторно заполните заполненную форму. Таким образом, взаимодействие выглядит так:

GET  /your-url => blank form
POST /your-url (success) => Redirect => GET /success-url
POST /your-url (failure) => filled-in form
7
ответ дан Justin Voss 28 August 2018 в 02:45
поделиться

Упомянутая проблема закладки-закладки влияет на оба подхода, вы не можете пометить что-то, что полагается на некоторые временные данные, сохраненные на сервере.

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

Так что PRG только на успех - очень чистый подход.

3
ответ дан Tom Pažourek 28 August 2018 в 02:45
поделиться
Другие вопросы по тегам:

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