MVC3中Html.BeginForm的用法是什麼? 爲什麼我們使用它,當我們可以直接添加一個表單標籤時,這個html助手是否添加了一些功能或做了一些無法用簡單的表單標籤完成的功能。MVC3中Html.BeginForm的用法
回答
Html.BeginForm
輔助方法包含一個couple overloads,其目的是使書寫路由表單更容易。它意識到MVC結構並確保其針對控制器和操作。這是在剛剛有點語法糖:
<form method="post" action="@Url.Action(...)">
在微軟的話說:
ASP.NET MVC框架包括輔助方法提供了一種方便的方式來渲染HTML視圖中。
當然,沒有人讓你使用它們。它只是一個偏好問題。事實上,在MVC的早期,許多WebForms開發人員慶祝他們從服務器控件a-la <asp:TextBox>
等人獲得的新自由,並堅持要用手寫所有東西。
強烈建議使用表單字段的助手,因爲他們知道表單驗證等內容。 Html.BeginForm
只是給你一個一致的方式來啓動和完成表單:
@using(Html.BeginForm())
{
@Html.LabelFor(...)
@Html.EditorFor(...)
}
Html.BeginForm
返回IDisposable
對象,讓你敷在C#using
聲明。當using
退出時,處置將自動爲您撥打Html.EndForm()
。由於Html.EndForm
回報void
是稍顯不便,從剃刀撥打:
@Html.BeginForm()
<formStuff>
@{Html.EndForm();}
一個簡單@Html.EndForm()
將轉向Write(Html.EndForm()) -> Write(void)
,即編譯時錯誤。
當然你也可以手工編寫代碼,但它確實有幾個優點,如:
- 它返回一個對象,它是一次性的,這樣就可以把它放在一個
using
條款,它會關閉窗體標籤爲您 - 它計算的URL的形式操作
做一些事情,不能用簡單的形式來完成
最後,每個輔助方法調用都轉換爲純HTML,因此沒有什麼Html.BeginForm可以做到的,但不能通過直接使用<form>
標籤來完成。
Html.BeginForm
純屬輔助方法。
有幫手的目的是什麼? (修辭問題)你也可以手動輸入所有輸入,但幫手......好吧,有時候會幫助你。
它把它放在標籤。是的,你可以做手工,或者你可以多一點幻想和做到這一點:
@using(Html.BeginForm())
{
}
這將關閉表單標籤爲你。因此,如果您將所有輸入保留在曲線括號內,則不必擔心記住關閉表單標記。
問題是*什麼時候會有幫助。忘記關閉標籤就像忘記關閉大括號一樣 - 所以有什麼意義? – John 2014-11-05 09:18:38
優秀的問題,我很想知道我自己。
我可能是錯的,但這裏是我的猜測(一個更好的人可以指正):
在MVC的初期,沒有刮鬍子。
C#/ VB和html之間的切換很難在語法上進行切換,所以推動了最小化這些邊界。
創建表單時,有人發現純粹在C#/ VB一側創建整個表單,沒有任何混合的手動html,只能有一個邊界到周圍的html世界。
由於程序員經常從其他地方複製做事風格,使用這些助手的做法一直存在,即使他們的好處隨着剃刀的出現而消失了。
- 1. Html.BeginForm中的Html.BeginForm MVC3
- 2. ASP.NET MVC3 RenderPage&Html.BeginForm
- 3. mvc3 html.Dropdownlist()和html.beginform()
- 4. MVC3 Html.BeginForm()與額外的HTML
- 5. 如何指定編碼在MVC3 Html.Beginform
- 6. MVC3 Html.BeginForm沒有爲頁面渲染
- 7. 使用GET方法的Html.BeginForm()
- 8. 在Html.BeginForm()中使用DELETE表單方法?
- 9. @用於Html.BeginForm的匿名方法
- 10. mvc3 - 如何從控制器更新Html.BeginForm()的動作屬性
- 11. 不使用@ Html.BeginForm()
- 12. 使用html.beginform
- 13. @ Html.BeginForm語法在Visual Basic
- 14. html.beginForm不會調用控制器方法
- 15. 而與@ Html.BeginForm(名稱MVC3形式),它在資源管理器
- 16. MVC3 Html.BeginForm - 傳遞參數作爲RouteValueDictionary失敗
- 17. 如何使用Html.BeginForm?
- 18. Html.BeginForm不起作用
- 19. 如何調用Html.BeginForm
- 20. WebGrid列中的ASP.NET MVC Html.BeginForm
- 21. 在WebApi中的Html.BeginForm - 路由
- 22. Html.BeginForm PUT
- 23. Html.BeginForm沒有onBegin,的onComplete方法,如Ajax.BeginForm
- 24. 何時使用html.beginform VS ajax.beginform
- 25. MVC Html.BeginForm使用領域
- 26. URL參數使用Html.BeginForm
- 27. 在ASP.NET MVC中放置Html.BeginForm()
- 28. 如何@ Html.BeginForm
- 29. @using block before @ Html.BeginForm
- 30. Html.BeginForm多htmlAttributes
這裏使用的意思是什麼,它與在asp.net中使用結構有關,用於包裝IDisposable對象? – Charu 2012-07-25 08:02:02
我在答案中添加了一段。 – Kivin 2012-07-25 08:11:45