Frage

Hier kann sagen, wir haben eine Klasse mit einer Eigenschaft namens PetsName. Wenn es leer gelassen auf dem Bildschirm möchte ich den Wert Provider aktualisieren, damit, wenn der Benutzer keine Kosenamen eintritt, wir ‚unbenannte‘ erzwingen. Dies ist nicht das tatsächliche Szenario .. das ist natürlich eine Probe, so Antworten wie ‚gerade eingestellten Standardwerte auf einer Webseite, etc‘ werden dieses Szenario nicht passen:)

Das Hauptproblem ist, dass wir die Werte so aktualisieren möchten, wenn Sie das Modell aktualisieren wird es, was Sie außer Kraft gesetzt haben verwenden. Ich denke, eine Idee ist, den Wert zu entfernen und hinzufügen. Wenn ich Model überprüfen, hat es den aktualisierten Wert haben, aber wenn ich TryUpdateModel nennen, wird der Wert nicht aktualisiert. Es ist möglich, was Im unten zu tun ist in der Tat richtig, und es ist ein anderes Thema hier, aber ich dachte ich dies zuerst versuchen würde. Dank!

    //Sample case:

    [HttpPost]
    public ActionResult Edit(PetOwner petOwner)
    {

    //If pets name is not set, force to "Unknown"
    if(petOwner.PetsName=="")
    {
    //Tried this too ModelState.Remove("PetsName");
    //ModelState.Add("PetsName", new ModelState());
    ModelState["PetsName"].Value = new ValueProviderResult("Unnamed", "Unnamed", CultureInfo.CurrentCulture);
    }

    //Get the record/relationships from DB to merge with ModelState
    PetOwner petOwnerToSave = from o in ctx.PetOwners where o.PetOwnerId == petOwner.PetOwnerId select o;

    TryUpdateModel(petOwnerToSave);

    //Save petOwnerToSave
    }

War es hilfreich?

Lösung

Das eigentliche Problem hinter den Kulissen ist hier, dass Html.HiddenFor war nicht der richtige Wert angezeigt wird, obwohl TryUpdateModel wurde ein Wert im Modell zu aktualisieren, um die Ansicht zu geben.

Das Problem hierbei ist, dass die HTML-Helfer übernehmen, wenn Sie eine Ansicht nach einer Post rendern, gibt mustve ein Fehler aufgetreten (sonst wouldve Sie mit einer GET-Methode zu der Ansicht umgeleitet zurück - daher der Beitrag Redirect Get Ausgabe)

Dies ist bei im Detail beschrieben: http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top