ASP.NET MVC Razor, Html.BeginForm, используя оператор
Для приложения ASP.NET MVC может кто-нибудь объяснить мне, почему вызовы Html.BeginForm
начинаются с утверждения @using
?
Пример -
@using (Html.BeginForm()) {
//Stuff in the form
}
Я думал, что выражения @using
предназначены для включения пространств имен.
Спасибо!
Ответы
Ответ 1
Использование Statement обеспечивает удобный синтаксис, который обеспечивает правильное использование объектов IDisposable
. Поскольку помощник BeginForm
реализует интерфейс IDisposable
, вы можете использовать с ним ключевое слово using
. В этом случае метод отображает закрывающий тег </form>
в конце инструкции. Вы также можете использовать блок BeginForm
без using
, но тогда вам нужно отметить конец формы:
@{ Html.BeginForm(); }
//Stuff in the form
@{ Html.EndForm(); }
Ответ 2
using
, поскольку операторы используются для определения области объекта IDisposable.
@using (var form = Html.BeginForm()) {
//Stuff in the form
} // here Dispose on form is invoked.
Html.BeginForm вернуть объект, который во время размещения метки закрытия выделения для формы: </form>
using
для включения пространства имен является директивой.
Ответ 3
Когда вы используете using
с Html.BeginForm, помощник испускает закрывающий тег и открывающий тег во время вызова BeginForm, а также вызов для возврата объекта, реализующего IDisposable
.
Когда выполнение возвращается в конец (Закрытие фигурной скобки), используя оператор в представлении, хелпер испускает тег закрывающей формы. Код using
проще и элегантнее.
Не обязательно, чтобы вы использовали using
в сочетании с Html.BeginForm
.
Вы также можете использовать
@{ Html.BeginForm(); }
<input type="text" id="txtQuery"/>
<input type="submit" value="submit"/>
@{ Html.EndForm(); }