Fernvalidierung für MODELLLISTE

Ich habe das folgende Tutorial verwendet:http: //msdn.microsoft.com/en-us/library/gg508808%28VS.98%29.asp

Und alles schien in Ordnung zu sein, aber in meinem Fall kommt der String Benutzername immer auf null zurück. Nach vielen Recherchen fand ich heraus, dass jeder BIND-Präfixe entdeckt hat. Das wäre unter vielen Umständen großartig, aber nicht dieses. Ich sollte beachten, dass alle Eigenschaften und Namen in einer Linie stehen. In meiner for-Schleife erstellt EditorFor jedoch ein [i] .Username-Feld, das keiner Modelleigenschaft zugeordnet wird.

FRAGE Ich denke, ich möchte [i] .Username dem Benutzernamen zuordnen, wobei i eine beliebige Zahl von 0 bis unendlich ist. Wenn es also GETS ist, wird der Wert ordnungsgemäß an die Aktion übergeben. Wie mache ich das? Wenn dies falsch ist, wie überprüfe ich dies für eine bestimmte Zeile in einer Tabelle?

@for (var i = 0; i < Model.Count; i++)
{
  BLAH BLAH BLAH CODE FOR BUILDING TABLE ROWS
  <td>
     @Html.EditorFor(modelItem => Model[i].Username)
  </td>                               
}

Da ich technisch HUNDERT, wenn nicht TAUSENDE von Aufzeichnungen haben könnte, hätte ich lieber kein verbindliches PREFIX für alle 1000. Vermisse ich hier grundlegend etwas? Ich bin neu in ASP.NET MVC und bin an WebForms gewöhnt, sodass ich manchmal das Gefühl habe, Konzepte zu mischen und etwas zu mischen, das völlig falsch ist.

BEARBEITEN Ich habe das folgendermaßen behoben, bin mir aber nicht sicher, ob dies die beste Idee ist. Ich habe den Parameter gleich dem Feldnamen ohne [i] -Präfix gesetzt, aber ich habe immer noch das Element mit dem [i] -Präfix abgerufen. Javascript ist nicht meine Stärke, also lass es mich wissen, wenn es schrecklich ist.

adapters.add("remote", ["url", "type", "additionalfields"], function (options) {
    var value = {
        url: options.params.url,
        type: options.params.type || "GET",
        data: {}
    },
        prefix = getModelPrefix(options.element.name);

    $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {

        var paramName = fieldName.substr(fieldName.lastIndexOf(".") + 1);

        var actualFieldName = appendModelPrefix(fieldName, prefix)
        value.data[paramName] = function () {
            return $(options.form).find(":input").filter("[name='" + escapeAttributeValue(actualFieldName) + "']").val();
        };
    });

    setValidationValues(options, "remote", value);
});

Antworten auf die Frage(2)

Ihre Antwort auf die Frage