Laden...

[MVC] PartialView-ChildAction mit Post wird im Frontend nicht aktualisiert

Erstellt von ZeroQool vor 12 Jahren Letzter Beitrag vor 12 Jahren 642 Views
Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 12 Jahren
[MVC] PartialView-ChildAction mit Post wird im Frontend nicht aktualisiert

Hallo zusammen,

habe einen HomeController mit folgendem Code:


        public ActionResult Index()
        {
            return View();
        }

        [ChildActionOnly]
        public ActionResult EditBankChildAction()
        {
            var personBank = db.Person_Bank.Find(1);

            return PartialView(personBank);
        }

        [HttpPost]
        public ActionResult EditBankChildAction(Person_Bank bank)
        {
            var personBank = db.Person_Bank.Find(1);
            personBank.Owner = DateTime.Now.ToLongTimeString();

            db.Entry(personBank).State = EntityState.Modified;
            db.SaveChanges();

            return PartialView(personBank);
        }

Index.cshtml


<div style="float: left; width: 500px;">
    <fieldset>
        <legend>Stammdaten</legend>
    </fieldset>
</div>
<div style="float: left; width: 300px; padding-left: 30px;">
    @Html.Action("EditBankChildAction")
</div>

EditBankChildAction.cshtml


<div id="customresponse">
    @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "customresponse" }))
    {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Bankverbindung</legend>
            <div class="editor-label">
                @Html.LabelFor(model => model.AccountNumber)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.AccountNumber)
                @Html.ValidationMessageFor(model => model.AccountNumber)
            </div>
            <div class="editor-label">
                @Html.LabelFor(model => model.BankCode)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.BankCode)
                @Html.ValidationMessageFor(model => model.BankCode)
            </div>
            <div class="editor-label">
                @Html.LabelFor(model => model.IBAN)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.IBAN)
                @Html.ValidationMessageFor(model => model.IBAN)
            </div>
            <div class="editor-label">
                @Html.LabelFor(model => model.SWIFT)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.SWIFT)
                @Html.ValidationMessageFor(model => model.SWIFT)
            </div>
            <div class="editor-label">
                @Html.LabelFor(model => model.BIC)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.BIC)
                @Html.ValidationMessageFor(model => model.BIC)
            </div>
            <div class="editor-label">
                @Html.LabelFor(model => model.Owner)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Owner)
                @Html.ValidationMessageFor(model => model.Owner)
            </div>
            <p>
                <input type="submit" value="Save" />
            </p>
        </fieldset>
    }
</div>

Mein Problem ist jetzt sobald ich den Submit Button drücke, dass die Partial View nicht neu aufgebaut/aktualisiert wird. In meinem rudimentären Test-Szenario schreibe ich die Uhrzeit bei Owner rein, aber auf der gerenderten HTML Seite steht nur die Zeit seit dem "letzten Seitenaufruf", also nicht die Zeit als ich den Submit Button geklickt habe. Ein Ajax.BeginForm brachte ebenfalls nichts (siehe Code)...

Wäre für jede Hilfe dankbar.

16.835 Beiträge seit 2008
vor 12 Jahren

Hast Du Dir mal die Mühe gemacht - was man auch erwarten kann - und mit Firefox und Firebug nachvollzogen, was überhaupt gesendet und empfangen wird, ob es irgendwelche Fehler oder Meldungen gibt?
Damit findet man nämlich solche Probleme sehr schnell und eigenständig raus.

Zudem empfiehlt Microsoft Plain-jQuery zu nutzen, da die eigenen Implementierungen nicht in einem verhältnismäßig akzeptablen Zyklus aktualisiert werden.

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 12 Jahren

Ja, habe ich....Es wird ein Post ausgelöst, deshalb steht auch in der DB der aktuelle Wert. Laut Firebug wird alles aus dem Cache gelesen, denke ihm fehlt hier der GET oder so.

Natürlich weiß ich nicht, ob mein Vorhaben generell funktioniert, deshalb auch mein Posting.

16.835 Beiträge seit 2008
vor 12 Jahren

Naja ich muss ehrlich sagen, dass ich bisher nur plain-jQuery genutzt habe.
Bei POST-Anfragen wird nichts gecached. Jedenfalls nicht auf der Client-seite.

Springt die Anwendung überhaupt in den korrekten Punkt der Anfrage?
Wenn ja liegts ja nicht an Javascript, sondern viel eher an Deiner Datenbankschnittstelle.