2011-12-15 2 views
7

Я слышал, что MVC .NET не имеет гражданства. Каковы последствия этого и почему MVC является апатридом.Является ли ASP.NET MVC без гражданства?

+3

Возможно, это означало, что он не поддерживает viewstate, как веб-страницы ASP.NET. Это правда. Этот выбор лучше подходит для безгражданности HTTP и, вероятно, он был выбран. Только дизайнеры могут сказать с любым поручителем, хотя я, например, радуюсь этому факту. – tvanfosson

+0

Можете ли вы предоставить дополнительную информацию или ссылки? Поскольку это прямо сейчас, ваш вопрос основан на неизвестном утверждении сомнительного «факта». – 7hi4g0

ответ

7

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

Каждая веб-инфраструктура пытается преодолеть это, используя либо функцию cookie, либо функцию Request/Response, такую ​​как строка запроса или сообщение FORM.

+3

Вы имеете в виду, что все через HTTP является апатридом? WebForms также работает на HTTP. –

+2

@Henk WebForms использует viewstate и POST для поддержания состояния. – Ryan

+2

@HenkHolterman: Да. HTTP не имеет статуса. Нет сеанса. WebForms имитирует сеанс, используя тайм-аут и перенося его информацию по структуре запроса/ответа. Вы никогда не получите уведомление в HTTP, когда пользователь закрывает его веб-браузер/«сеанс». – jgauffin

5

MVC не является (полностью) без гражданства. Нет веб-структуры.

Я думаю, что это относится к тому, что MVC отменяет поле _VIEWSTATE.

Но дайте ссылку или дополнительную информацию.

2

Я бы сказал, все веб-связи является лицом без гражданства, за исключением некоторых новых технологий, таких как SignalR [Async signaling library for ASP.NET to help build real-time, multi-user interactive web applications] .

Вы делаете запрос и получаете ответ, то есть, возможно, то, о чем вы думаете, не использует ViewState, как в webforms.

5

Интернет не имеет гражданства, поэтому все, что построено на вершине http, является апатридом. Я имею в виду, что каждый запрос/ответ - это атомная единица без знания какого-либо предыдущего запроса.

Есть механизмы с http, которые позволяют удерживать определенную форму состояния между запросами, такими как Session и Application, но в целом они должны использоваться как можно меньше.

Webforms пытается создать иллюзию состояния, введя ViewState и Postback. Но это не меняет того факта, что Интернет не имеет гражданства.

8

государство управляется в ASP.NET (MVC и WebForms) через several means:

  • Session
  • Печенье
  • Форма сообщений
  • Применение
  • Строка запроса
  • Cache
  • Контекст

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

MVC на самом деле не является апатридом, но он удаляет один из наиболее распространенных способов сохранения состояния в ASP.NET - ViewState.

Смежные вопросы