表單的構建
我才知道這個東西,在開發中經常遇到表單的情況。一下子提交一串內容。表單元素 form,里面的內容必須有name字段。form表單action就是你后端控制器的地址,涉及密碼一般post,enctype以流的形式。只要里面的元素有name,后端就可以通過name獲取到。type="submit" 這就是提交表單了
<form action="/Home/test" method="post" enctype="multipart/form-data">
賬號:<input type="text" name="userName" value="默認值" required><br />
密碼:<input type="password" name="passWord"><br />
性別:<input type="radio" name="sex" value="boy" checked="checked" />男
<input type="radio" name="sex" value="girl" />女
<input type="radio" name="sex" value="none" />保密<br />
愛好:
<input type="checkbox" name="hobby" value="Vae" checked="checked">許嵩
<input type="checkbox" name="hobby" value="JJ" checked="checked">林俊傑
<input type="checkbox" name="hobby" value="shuyunquan">蜀雲泉<br />
城市:
<select name="city" multiple="multiple" size="2">
<!--multiple是可以多選的意思,size是一次顯示幾個,option加value就是值是什么,不加默認寫的深圳-->
<option value="sz">深圳</option>
<option value="bj">北京</option>
<option value="hn">河南</option>
</select><br /><br />
簡介:
<textarea name="intro" rows="5" cols="30"></textarea> <!--這里textarea不能換行,必須寫兩個而且在同一行-->
<br /><br />
<input type="submit" value="注冊" />
<input type="reset" value="重置" />
</form>
后端接收
想接受一個就這樣寫,里面是name。但是表單元素這么多,一個一個的接收,這不費事嗎
[HttpPost]
public ActionResult test(FormCollection collection)
{
string name=collection["userName"];
return View();
}
創建model
一般來說,數據庫的表對應一個model,然后表單的內容,也差不多就是model的字段。都是對應的,我們對上面的表單創建一個對應字段的model
public class Info
{
public string userName { get; set; }
public string passWord { get; set; }
public string sex { get; set; }
public string hobby { get; set; }
public string city { get; set; }
public string intro { get; set; }
}
用Model接收表單的后端
[HttpPost]不用多說,這是制定本action只接受post請求,[ValidateInput(false)]這個是取消危險驗證,例如“<> %$#” 這些字符等,但是表單中的簡介,備注什么的可能會使用這些字符,所以可以取消驗證
[HttpPost]
[ValidateInput(false)]
public ActionResult test(FormCollection collection)
{
Info info = new Info();
TryUpdateModel(info);
return View();
}
沒了,就一個TryUpdateModel方法就可以自動的把表單內容映射進model,然后接下來你是存進數據庫還是操作就隨意了。