Domanda

Così ho una serie di numeri che sto postando a un'azione MVC asp.net che ha una lista (di numero intero) dei parametri e tutto funziona alla grande.
la mia domanda è questa:

E 'lecito ritenere che la lista (di numero intero) avrà i numeri nello stesso ordine come erano nella matrice ho postato?

Grazie per il vostro tempo!

EDIT:

i dati da inviare assomiglia a questo:

POSTDATA = model.LevelIds = 6 & model.LevelIds = 19 & model.LevelIds = 16 & model.LevelIds = 21 & model.LevelIds = 18

sto usando il Tamper Data Firefox add on per vederlo.

Sto utilizzando jQuery, in modalità tradizionale.

EDIT:

l'aspetto di azione Qualcosa di simile a questo:

public function Create(byval model as thecreateviewmodel) as actionresult

il thecreatviewmodel ha un sacco di proprietà, ma quello è interessante ...

Public Property LevelIdsAs IList(Of Integer) = New List(Of Integer)

sul lato client il modello vista è costruire con javascript / jquery:

function NewEntityDataBuilder() {
    var theData = { 
        'model.Name' : $('#Name').val(),
        'model.Description' : $('#Description').val(),
        'model.LevelIds' : $('#LevelIds').val()
    };
    return theData;
}

che funzione viene chiamata da questo po 'di javascript che passa essenzialmente attraverso la e aggiunge tutte le cose nella lista per un elenco a discesa (select controllo) e li seleziona in giù.

$('#LevelIds').empty();
$('#AddedLevels').children().each(function () {
$('#LevelIds').append("<option value='" + $(this).attr('LevelId') + "'>" + $(this).attr('LevelId') + "</option>");
        });

$('#LevelIds').children().attr('selected', 'selected');  //select all the options so they get posted.

var dataToPost = NewEntityDataBuilder();   

questo sembra abbastanza contorto quando è messo in questo modo, ma in realtà è abbastanza semplice. fa tutto parte di 2 liste di drag and drop connesse che fanno parte di un modulo.

così: se ho messo il valore di un elenco di selezione con tutti i suoi di opzioni selezionate in una variabile e post che a un IList (di integer) verrà ilist loro hanno nello stesso ordine in cui erano nel selezionare. Sembra che essi sono. ma è solo una coincidenza?

È stato utile?

Soluzione

Di solito l'indice è parte del nome del parametro:

ints[0]=0&ints[2]=2&ints[1]=1

E se si dispone di un'azione di controllo che assomiglia a questo:

public ActionResult Index(List<int> ints)
{
    // ints[0] = 0
    // ints[1] = 1
    // ints[2] = 2
    return View();
}

UPDATE:

Supponiamo che si dispone di più parametri con lo stesso nome nella stringa di query. Questa stringa di query verrà analizzato dal motore di ASP.NET dalla nativa HttpRequest oggetto essere convertito in un NameValueCollection e più precisamente un'implementazione personalizzata chiamato HttpValueCollection. Questa classe è interno ad ASP.NET che significa che non è documentato e potrebbe cambiare con le versioni di .NET. Guardando con riflettore c'è il FillFromString e il modo in cui viene implementato sembra di preservare l'ordine. Ma questo è qualcosa che non avrei fare affidamento su.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top