我正在学习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;%=
干杯,
答案 0 :(得分:1)
<% %>
包装代码块
<%="string" %>
相当于<% Response.Write("string") %>
在ASP.NET MVC 3中,您可以使用<%: "<htmlTag>" %>
你绝对可以写<%=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"); %>
当<%
意味着您拥有的代码块可能不仅仅是打印嵌套在其中的值。