[ASP.NET MVC] @Html.BeginForm() 和 <form>
要產生 <form> 要使用 @Html.BeginForm() 方法,不過不能單獨呼叫,因為 <form> 要有 </form> ,所以要利用 @using() { } 包住。下面舉例,在 Home Controller 裡寫一個 Action 叫 Create :
public ActionResult Create()
{
return View();
}
在 Create 的 View 中,如下使用 BeginForm() 方法:
@using(Html.BeginForm())
{
}
// 會產生:
<form action="/Home/Create" method="post"></form>
會發現 action 屬性已自動填上本身 Action 的位址,而且 method 自動使用 Post,這些是 BeginForm() 預設的選項,也可以更改:
@using(Html.BeginForm("CreateDetail" // 目標 Action
, "Order" // 目標 Controll
, FormMethod.Get)) // 使用 method 方法
{
}
// 會產生:
<form action="/Order/CreateDetail" method="get"><form>
如上,action URL 會更改,且 method 也改成使用 Get 方法。
也可以用五個引數,在第三個引數帶入 route value ,第五個引數帶入 HTML Attribute,都是使用匿名類別帶入,如下:
@using(Html.BeginForm("CreateDetail"
, "Order"
, new { CreateTime = DateTime.Now }
, FormMethod.Post
, new { name = "detailInfo" } ) )
{
<div>
@Html.TextBox("Name")
</div>
<div>
@Html.TextBox("Price", 0, new { type = "number" } )
</div>
@Html.TextBox("send", "送出", new { type = "submit" } )
}
// 會產生:
<form action="/Order/CreateDetail?CreateTime=...進入View的時間..." method="post" name="detailInfo">
<div>
<input id="Name" name="Name" type="text" value="" />
</div>
<div>
<input id="Price" name="Price" type="number" value="0" />
</div>
<input id="send" name="send" type="submit" value="送出" />
</form>
Route value 可以攜帶固定的資料去後端,如果 AJAX 使用 formData 傳輸這個表單,就需要 <form> 的 name 屬性,這兩個其實使用機會不多,比較常見是傳送非純文字資料(例如圖片)時會使用 new { enctype = "multipart/form-data" }。
因為預設使用 Post 方法,而且會傳到與 View 同名的 Action,故通常都使用 @using(Html.BeginForm()) { ... } 即可。
- @Html.ActionLink() 和 <a>
- @Html.TextBox() 、@Html.TextBoxFor() 和 <input type="text">
- @Html.TextArea() 、@Html.TextAreaFor() 和 <textarea>
- @Html.Label() 、@Html.LabelFor() 和 <label>
- @Html.Password() 、@Html.PasswordFor() 和 <input type="password">
- @Html.RadioButton() 、@Html.RadioButtonFor() 和 <input type="radio">
- @Html.CheckBox() 、@HtmlCheckBoxFor() 和 <input type="checkbox">
- @Html.DropDownList() 、@Html.DropDownListFor() 和 <select> 與<option>
- @Html.BeginForm() 和 <form>
- @Html.Hidden() 、@Html.HiddenFor() 和 <input type="hidden">
- @Html.DisplayFor() 、@Html.DisplayTextFor()、@Html.DisplayNameFor() 和 @Html.EditorFor()

留言
張貼留言