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(); }