mvc的視圖太強大了,個人剛剛接觸。(初級菜鳥,懂的不多,往大神們指點)需求是,客戶點擊添加按鈕彈出一個框選擇產品后直接添加到表單中,在表單可以自己更改產品的數量,以及一些信息。mvc表單提交的時候只要name屬性和要提交的控制器里面方法的參數一樣mvc就能自動識別,利用這個好處就可以很輕松的提交多條數據。
如圖顯示
前台代碼(沒有用mvc的一些擴展方法,@Html 之類的,我是為了說明添加多個表單)
<form action="/Home/Add" method="post"> <table id="tb"> <tr> <th>商品名稱</th><th>商品數量</th><th>商品類型</th> </tr> @for (int i = 1; i < 10; i++) { <tr> <td><input type="text" name="ProductName" value="名稱 @i " /></td> <td><input type="text" name="ProductNum" value="數量 @(i+3) " /></td> <td><input type="text" name="ProductType" value="類型了" /></td> </tr> } </table> <br /> <input type="submit" id="" value="提交" /> </form>
后台代碼
public ActionResult Index() { return View(); } [HttpPost] public ActionResult Add(List<string> ProductName, List<string> ProductNum, List<string> ProductType) { for (int i = 0; i < ProductName.Count; i++) { Product mod = new Product(); mod.ProductName = ProductName[i]; mod.ProductNum = ProductNum[i]; mod.ProductType = ProductType[i]; ProductSubmit(mod); } return View(); } public bool ProductSubmit(Product mod) { //這里就可以直接執行EF 添加數據發方法了 // db.Add(mod); return true; }
首先打開當我們提交表單的時候,用谷歌自帶插件看到把他這些數據提交了
到后台第一次逐個的遍歷每條數據,因為傳來的數據name有很多相同的,所以選擇用多個集合參數接受 用數組也可以,定義一個類專門接受應該也可以的
每循環一次得到一組數據,添加到數據中去,最后直接用 db.add(mod) ,然后保存就OK了