簡體   English   中英

ASP.NET MVC:操作方法,並自動綁定到值數組

[英]ASP.NET MVC: Action Method and automatically binding to an array of values

我有一段JavaScript,可以發布到一個操作方法中,並附帶一些數據。 該數據的格式為:

pageID  1
photos[1]   2
photos[2]   1

我的操作方法如下所示:

public ActionResult PosImage(IEnumerable<int> photos, int pageID)

自然,pageID通過表單數據進入,但是照片始終為空。

ASP.MVC是否可以像這樣進行綁定?

處理該帖子的JS如下所示:

var ids = { 'photos': {}, 'pageID': SitePhotos.site_id };
    $('#stone-photo-sortable li').each(function (i) {
        i++;
        var id = $(this).attr('rel');
        ids.photos[id] = i;
    });
    $.ajax({
        type: "POST",
        url: '/backend/site/posimage/?timestamp=' + new Date().getTime(),
        dataType: 'json',
        data: ids,
        beforeSend: function () { },
        complete: function () { },
        success: function (html) {
            if (html.worked == 1) {
                Notify.add('success', 'New Positions saved to the database..');
            } else {
                Notify.add('failure', 'Couldn\'t save positions.');
            }

        }
    });

我還沒有用javascript完成它,但是您的發布數據實際上應該是這樣的:

photos: 1
photos: 2
photos: 3

您可能需要使用其他$ .ajax重載才能傳遞具有重復鍵名的帖子數據。

編輯似乎要做的就是將傳統標志設置為true。

在我看來,如果您將photos對象轉過來並將其變成一個數組,則對您來說會更好:

var ids = { 'photos': [], 'pageID': SitePhotos.site_id };
    $('#stone-photo-sortable li').each(function (i) {
        ids.photos[i] = $(this).attr('rel');
    });

Sergio,這可以很容易地解決。

IEnumerable<int> photos可以使用,但您的數組應始終從0開始! 不等於1

使其從0開始,MVC會將其解析為IEnumerable

在這里閱讀更多關於它的信息: http : //haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM