Form表單的傳遞與接收


表單的構建

我才知道這個東西,在開發中經常遇到表單的情況。一下子提交一串內容。表單元素 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,然后接下來你是存進數據庫還是操作就隨意了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM