HTMLHelper.Beginform查询

时间:2011-01-19 15:33:36

标签: asp.net-mvc-2

我正在学习ASP.NET MVC中的HTMLHelpers。

要呈现表单HTML标记,您可以编写类似

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

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

要渲染一个复选框,您将使用

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

我想知道的是为什么我们在使用BeginForm时需要使用&lt;%而我们需要在使用其他HTMLHelper方法时使用&lt;%=

干杯,

3 个答案:

答案 0 :(得分:1)

<% %>包装代码块

<%="string" %>相当于<% Response.Write("string") %>

在ASP.NET MVC 3中,您可以使用<%: "<htmlTag>" %>

自动HtmlEncode

你绝对可以写<%=Html.BeginForm() %>,但你还需要写<%=Html.EndForm() %>。在Html.BeginForm()块中包裹using只会为您呈现结束</form>标记。

答案 1 :(得分:1)

Html.CheckBox会返回包含<input>标记的HTML字符串 您需要通过编写<%= ... %>将此字符串打印到页面。

Html.BeginForm在方法内打印HTML(通过调用Response.Write),并且不返回HTML。 (相反,它会返回IDisposable,以便您可以在using块中使用它) 由于您没有打印其返回值,因此将其放在<% ... %>块中,该块执行代码而不打印其结果。

答案 2 :(得分:0)

因为<%=的意思是“为我打印”,与以下几点完全相同:

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

<%意味着您拥有的代码块可能不仅仅是打印嵌套在其中的值。