MVC4-Pass-Modell via Ajax.BeginForm

Ich habe versucht zu Folgen, einige gute Beiträge hier, um diese zu arbeiten, aber jedes mal, wenn ich auf die ajax-postback der Pause, in der mein controller zeigt ein Modell mit null-Werten. Diese Seite zeigt Modell Werte nur für die Anzeige, aber ich habe versucht, Sie in Ihre eigene form und auch das einwickeln von Ihnen in der ajax-form, und nichts scheint zu funktionieren.

@model VendorProfileIntranet.Models.VendorProfile

$(function () {
$("form").submit(function () {
    if ($(this).valid()) {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function (result) {
                $("#message").html(result);
            }
        });
    }
    return false;
});

});

    @using (Ajax.BeginForm("SelectVendor", "Home", new AjaxOptions { HttpMethod="post", InsertionMode=InsertionMode.Replace, UpdateTargetId="message" }))
{
    <div style="float:right; width:500px">
        <div id="message"></div>
        <input id="btnSubmit" type="submit" value="Select Vendor" />
    </div>

Die Aussicht ist wirklich lang (zeigt nur Modell Werte für die Anzeige) hier abgekürzt.

<div id="viewform">
    <div id="viewform-contact" style="float:left;">
    <fieldset>
        <legend>Contact Information</legend>
        @Html.HiddenFor(model => model.ProfileID)
        <div class="view-field">
            @Html.LabelFor(model => model.Name)
            @Html.DisplayFor(model => model.Name)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.Email)
            @Html.DisplayFor(model => model.Email)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.Phone)
            @Html.DisplayFor(model => model.Phone)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.Website)
            @Html.DisplayFor(model => model.Website)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.CompanyName)
            @Html.DisplayFor(model => model.CompanyName)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.Address1)
            @Html.DisplayFor(model => model.Address1)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.Address2)&nbsp;
            @Html.DisplayFor(model => model.Address2)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.City)
            @Html.DisplayFor(model => model.City)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.State)
            @Html.DisplayFor(model => model.State)
        </div>
        <br />
        <div class="view-field">
            @Html.LabelFor(model => model.Zip)
            @Html.DisplayFor(model => model.Zip)
        </div>
        <br />
        <div class="view-fieldwide">
            @Html.LabelFor(model => model.VendorNotes)
        </div>
        <br />
        <div class="view-fieldwide">
            @Html.DisplayFor(model => model.VendorNotes)
        </div>
        <br /><br />
        </fieldset>
    </div>
}

Controller. Ich habe versucht, die oben in ein oder zwei Formen. Mit dem obigen code das Modell enthält alle leeren Werte mit Ausnahme der ProfileID, die ausgestopft in einem versteckten input-Feld. Ich glaube, übergeben das Modell funktionieren sollte, ohne dass Sie ein verstecktes Feld für jedes Modell Wert?

[HttpPost]
        public ActionResult SelectVendor(VendorProfile pageModel)
    {
        //handle selected vendor
            _DAL.SelectVendor(pageModel.ProfileID);
            return Content("This Vendor has been selected", "text/html");
    }

ANTWORT

Modell Werte sind nicht gebunden durch die Verwendung von DisplayFor

Sie scheinen zu fehlen-input-Elemente im Formular'
Dort gibt es einen button, der beim anklicken passieren soll, wieder das Modell, das ist die andere form (nicht gezeigt) und fügen Sie einen Datensatz in der db und update-Meldung im div-tag, dass es erfolgreich war. Ich habe versucht, alle Formular-Elemente in der ajax-form und das hat nicht funktioniert, so ist eine form oder zwei Formen hat nicht funktioniert. Ich weiß, ich bin etwas fehlt.
Kannst du den rest deiner Sicht?
Siehe oben. Ich vermute, dass etwas falsch mit der Art, wie ich die eine oder zwei Formen setup. Wie ich sagte, ich habe versucht, diese ein paar Möglichkeiten bereits. THx

InformationsquelleAutor SQLGrinder | 2013-03-15

Schreibe einen Kommentar