HTMLHelper.Beginform запрос - PullRequest
       2

HTMLHelper.Beginform запрос

1 голос
/ 19 января 2011

Я изучаю HTMLHelpers в ASP.NET MVC.

Чтобы отобразить HTML-тег формы, вы должны написать что-то вроде

<% using(Html.BeginForm("HandleForm", "Home")) {%>
    <!--Form content goes here-->
<% } %>

или

<% Html.BeginForm(); %>
… Form Contents …
<% Html.EndForm(); %>

Чтобы сделать флажок, вы должны использовать

<%= Html.CheckBox("bookType") %>

Я хотел бы знать, почему нам нужно использовать <%, когда мы используем BeginForm, тогда как нам нужно использовать <% =, когда мы используем другие методы HTMLHelper </p>

Приветствия

Ответы [ 3 ]

1 голос
/ 19 января 2011

<% %> переносит кодовый блок

<%="string" %> эквивалентно <% Response.Write("string") %>

и в ASP.NET MVC 3 вы можете автоматически HtmlEncode с <%: "<htmlTag>" %>

Вы можете написать <%=Html.BeginForm() %>, но вам также нужно будет написать <%=Html.EndForm() %>. Обтекание Html.BeginForm() внутри блока using просто сделает для вас закрывающий тег </form>.

1 голос
/ 19 января 2011

Html.CheckBox возвращает строку HTML, содержащую тег <input>.
Вам нужно напечатать эту строку на странице, написав <%= ... %>.

Html.BeginForm печатает HTML-код внутри метода (вызывая Response.Write) и не возвращает HTML. (вместо этого он возвращает IDisposable, так что вы можете использовать его в using блоке)
Поскольку вы не печатаете его возвращаемое значение, вы помещаете его в блок <% ... %>, который выполняет код без печати его результатов.

0 голосов
/ 19 января 2011

Поскольку <%= означает «Напечатай это для меня», почти так же, как и:

<% Response.Write("content"); %>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...