1. 程式人生 > >Asp.Net Mvc表單提交之List集合

Asp.Net Mvc表單提交之List集合

一、說明

1.Asp.Net Mvc中Action的引數可以自動接收和反序列化form表單的值,

2.對於name=value型別,只要Action引數的變數名和input的name相同就行,不區分大小寫

3.對於Model型別的,只要Action引數Model的欄位名和input的name相同就行,不區分大小寫

4.對於List型別,如下

二、List 基礎資料型別提交

Html程式碼

複製程式碼
<div class="panel panel-default">
    <div class="panel-heading">
       <div class
="panel-title"> List 基礎資料型別提交</div> </div> <div class="panel-body"> <form action="@Url.Action("TestOne")" method="post"> <div class="form-group"> <input name="name" value="張三" /> </div> <div
class="form-group"> <input name="name" value="李四" /> </div> <input class="btn btn-success" type="submit" value="提交" /> </form> </div> </div>
複製程式碼

Action接收

public JsonResult TestOne(List<string> name)
{
    return
Json(name); }

引數傳遞:

顯示結果:

三、List<Model>型別提交json陣列

複製程式碼
<div class="panel panel-default">
    <div class="panel-heading">
        <div class="panel-title"> List&lt;Model&gt; 資料型別提交(一)</div>
    </div>
    <div class="panel-body">
        <form action="@Url.Action("TestTwo")" method="post">
            <table>
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Name</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><input name="ID" value="1" /></td>
                        <td><input name="Name" value="張三" /></td>
                    </tr>
                    <tr>
                        <td><input name="ID" value="2" /></td>
                        <td><input name="Name" value="李四" /></td>
                    </tr>
                </tbody>
            </table>
            <input type="submit" class="btn btn-success" id="submit1" value="提交" />
        </form>
    </div>
</div>
複製程式碼

使用Ajax提交

複製程式碼
        $('#submit1').click(function () {
            var form = $(this).parents('form');
            var result = [];
            form.find('tbody tr').each(function () {
                var thisItem = $(this);
                result.push({
                    ID: thisItem.find("input:eq(0)").val(),
                    Name: thisItem.find('input:eq(1)').val()
                })
            });
            $.post(form.attr('action'), {
                stuList: result, //直接提交json陣列
            }, function (data) {
                alert(data);
            });
            return false;
        });
複製程式碼

後臺action接收處理

public JsonResult TestTwo(List<Student> stuList)
{
    return Json(stuList);
}

引數傳遞:

四、List<Model>型別提交之json陣列字串

HTML內容同上,

整合json陣列,以字串格式傳遞

複製程式碼
$('#submit2').click(function () {
    var form = $(this).parents('form');
    var result = [];
    var data = form.serializeArray();
    for (var i = 0; i < data.length; i++) {
        var item = data[i];
        var stu_i = Math.floor(i / 2); //沒2(物件的屬性個數)個位一組,整合到一個物件中
        if (!result[stu_i])
            result[stu_i] = {}; //初始化陣列中的物件
        result[stu_i][item['name']] = item['value'];
    }
    console.info(result);
    $.post(form.attr('action'), {
        stuList: JSON.stringify(result), //提交json字串,後臺自己反序列化
        other: 'test'
    }, function (data) {
        alert(data);
    });
    return false;
});
複製程式碼

action後臺引數接收處理

複製程式碼
public JsonResult TestThree(string stuList, string other = "沒有內容")
{
    //自己反序列化處理,更靈活處理
    List<Student> list = JsonConvert.DeserializeObject<List<Student>>(stuList);
    return Json(new { stu = list, other = other });
}
複製程式碼

引數傳遞:

返回結果:

特別說明

提交的Josn陣列整合方式1:從頁面dom中獲取

複製程式碼
//處理方式1,從頁面獲取值
var result = [];
form.find('tbody tr').each(function () {
    var thisItem = $(this);
    result.push({
        ID: thisItem.find("input:eq(0)").val(),
        Name: thisItem.find('input:eq(1)').val()
    })
});
複製程式碼

整合方式2:從表單的序列化陣列中獲取

複製程式碼
var result = [];
var data = form.serializeArray();
for (var i = 0; i < data.length; i++) {
    var item = data[i];
    var stu_i = Math.floor(i / 2); //沒2(物件的屬性個數)個位一組,整合到一個物件中
    if (!result[stu_i])
        result[stu_i] = {}; //初始化陣列中的物件
    result[stu_i][item['name']] = item['value'];
}
console.info(result);
複製程式碼

相關推薦

Asp.Net Mvc提交List集合

一、說明 1.Asp.Net Mvc中Action的引數可以自動接收和反序列化form表單的值, 2.對於name=value型別,只要Action引數的變數名和input的name相同就行,不區分大小寫 3.對於Model型別的,只要Action引數Model的

如何在asp.net提交到另一頁

在ASP.NET中,每一個aspx頁面在server端都對應一個System.Web.UI.Page例項,所以把一個頁面Form中Server Controls的內容(server端對應於page類例項的資料)提交給另一個page類,跟asp中的實現方法有所不同。 在as

Asp.Net MVC 5使用Identity簡單的註冊和登陸

stat bar del info var asp.net rem boot manage 由於.Net MVC 5登陸和註冊方式有很多種,但是Identity方式去實現或許會更簡單更容易理解 首先新建一個項目 其次如下選擇Empty和MVC的選項 然後打開NuGe

Web提交disabled問題

rip 使用 輸入框 pan parameter 事件 type .get ron 例如,有如下表單 <form id="inputForm" action="shorttermrental.action" method="post"> <inpu

[Spring MVC] 提交日期轉換問題,比如可能導致封裝實體類時400錯誤

new tac med tab mat -m bin Edito ack   三種格式的InitBinder @InitBinder//https://stackoverflow.com/questions/20616319/the-request-sent-by-the

ASP.NET MVC 5 破境道》:概述

概述 第一節:寫作本書的目的 第二節:ASP.Net MVC 概述 第三節:開發環境準備 第一節:寫作本書的目的   關於筆者   張曉亭(Mike Cheers),1982年出生,內蒙古遼闊的大草原是我的故鄉。   沒有高學歷,沒有侃侃而談的高談闊論,擁有的就是那一份對技術的執著,對自我價值的追求。   

ASP.NET MVC 5 破境道》:第一境 ASP.Net MVC5專案初探

第一境 ASP.Net MVC5專案初探 第一節:執行第一個MVC5專案 第二節:MVC5專案結構 第三節:View層簡單改造 第四節:打造首頁面 第一節:執行第一個MVC5專案 建立一個MVC專案,是很容易的,大部分工作,VS都幫我們完成了。只需要按照如下步驟按部就班就可以了。 開啟

ASP.NET MVC 5 破境道》:第一境 ASP.Net MVC5項目初探 — 第二節:MVC5項目結構

工具包 就會 詳細講解 xpl 自動 bundles uget 成了 樹形 第一境 ASP.Net MVC5項目初探第一節:運行第一個MVC5項目第二節:MVC5項目結構第三節:View層簡單改造第四節:打造首頁面第二節:MVC5項目結構接下來,我們來看看,VS為我們自動創

Asp.Net Form控制元件的回車預設事件

在WEB頁面上,通常SUBMIT型別的按鈕會被預設指派為所在FORM表單的提交按鈕 在做ASP.net WEB應用的時候,常常遇到會在同一個頁面裡新增多個按鈕,而每個按鈕肯定都會觸發頁面回送事件。 在ASP.NET中,只能指定一個帶有runat="server"的FORM表單,因此,這個表單會指派

springMVC學習(三)提交資料封裝

結合springmvc學習(一)和(二),我們可以讓伺服器啟動時,首先訪問hello.jsp,然後頁面提交後到TestController中,接著返回到hello.jsp頁面。專案結構如下: 配置如下: ①web.xml中配置如下: <?xml version="

form提交Enter提交

通常情況下,我們在頁面上操作輸入框的時候,像搜尋框,登入的時候,我們一般輸入完成後喜歡直接enter去獲取結果,然而尷尬的是當我們在註冊的時候,則不喜歡每填完一個內容就enter提交了。其實根據業務的不同需要,需要我們去判斷,在這之前需要我們去了解一下瀏覽器的一

Spring MVC 提交 出現400 Bad Request

因為是form表單中有日期,Spring不知道該如何轉換,解決辦法 是在實體類的日期屬性上加 @DateTimeFormat(pattern="yyyy-MM-dd")註解。 參考自:http://

form提交Ajax版和常用版區別和聯絡。

使用Ajax方法實現form表單的提交 1.區別 聯絡 在使用form表單的時候,一旦點選提交觸發submit事件,一般會使得頁面跳轉,頁面間的跳轉等行為的控制權往往在後端的控制層,後端會控制頁面的跳轉及資料傳遞。 但是當不希望頁面跳轉或者是想要將控制權放

django-25.提交post註冊案例

ddl comm 指向 註冊 跳轉 避免 ring put n) 一個網站上新用戶註冊,會寫個註冊頁面,如果用django寫個註冊頁面的流程呢?本篇以post請求示例,從html頁面上輸入用戶註冊信息,提交到後臺處理數據,然後傳參數據到User數據庫表裏面 註冊頁

ASP.NET MVC AJAX提交例項

1.首先,新建一個controller。 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespa

ASP.NET MVC提交

       ASP.NET MVC 開發過程中,我們經常要提交表單資料到後臺進行處理。今天就把常見的開發過程中用到的一些資料(表單)提交的方式做一個總結,方便自己今後查閱,如果對大家有益,那就更好了,總結得不好請大家給我留言指正。        首先我們說說不使用ASP.

ASP.NET MVC/Core提交後臺模型二級屬性驗證問題

起因 這個是網友在官網論壇的提問:https://fineui.com/bbs/forum.php?mod=viewthread&tid=22237     重新問題 本著務實求真的態度,我們先來複現這個問題。首先頁面截圖是這樣的:   類 

JSONAsp.net MVC C#對象轉JSON,DataTable轉JSON,List<T>轉JSON,JSON轉List<T>,JSON轉C#對象

技術分享 toolbar index 基本 枚舉 對象轉json tostring cab 拼接 一、JSON解析與字符串化   JSON.stringify()  序列化對象、數組或原始值   語法:JSON.stringify(o,filter,indent)     

ASP.NET MVC 搜索+保存搜索結果.2個按鈕共用一個

req request exp select ucc 結果 total cli 調用 想要實現的效果,1.搜索功能 2.搜索結果保存到text功能 前臺代碼 一個表單2個按鈕,通過JS代碼來修改form的action,來實現調用不同的後臺代碼 &l

Asp.net MVC4高級編程學習筆記-模型學習第五課MVC和HTML輔助方法20171101

流量 取值 工作 sin 輔助 一個點 大量 元數據 view MVC表單和HTML輔助方法 一、表單的使用。 表單中的action與method特性。Action表示表單要提交往那裏,因此這裏就有一個URL。這個URL可以是相對或絕對地址。表單默認的method屬性值是g