it-swarm.com.de

MVC4 Übergabe des Modells von der Ansicht an die Steuerung

Ich habe eine Ansicht mit einem Modell, das mit Daten bezüglich der Buchung eines Taxis gefüllt ist.

Im Modell befindet sich eine Liste von Zitaten mit Zeit, Preis, Fahrzeugtyp, in der ich eine Liste der Verwendung eines foreach anzeige. Jedes Mal, wenn die foreah-Schleife ausgeführt wird, werden ein Formular und eine Senden-Schaltfläche erstellt, die mich zur Aktion "BookingStage1" im Controller führen. Ich habe auch ein verstecktes Feld hinzugefügt, das mit der Buchungsreferenz für das jeweilige Angebot gefüllt ist.

Ich hatte also gehofft, dass das Modell, wenn es auf die Aktion trifft, in meinem Controller vollständig gefüllt zurückgegeben wird, so wie es mit der Ansicht war. Aber es ist null, überhaupt keine Daten.

Ich hatte gehofft, das bestückte Modell zwischen mehreren Controllern zu verteilen, während der Benutzer die verschiedenen Such-, Ergebnis- und Buchungsbildschirme durchläuft ...

Ist es möglich, das vollständig bestückte Modell aus der Ansicht in den nächsten Controller zurückzugeben?

Vielen Dank

Auf meiner Suchergebnisseite habe ich das folgende Formular:

using (Html.BeginForm("BookingPage1", "SearchResults", FormMethod.Post))

Ich habe auch ein verstecktes Feld in der Form wie folgt:

<input type="hidden" id="BookingID" name="ChosenBookingID" value='@item.QuotationID' />

welche Beiträge zu meinem Controller wie folgt aussehen:

[HttpPost]
    public ActionResult BookingPage1(string ChosenBookingID, Route theRoute)
    {
        //this does noting yet.
        return View();
    }

Aber die Route ist immer leer :(

14
Trevor Daniel

Ich hoffe, dieses vollständige Beispiel wird Ihnen helfen.

Dies ist die Klasse TaxiInfo, die Informationen zu einer Taxifahrt enthält:

namespace Taxi.Models
{
    public class TaxiInfo
    {
        public String Driver { get; set; }
        public Double Fare { get; set; }
        public Double Distance { get; set; }
        public String StartLocation { get; set; }
        public String EndLocation { get; set; }
    }
}

Wir haben auch ein Convenience-Modell, das eine Liste von TaxiInfo (s) enthält:

namespace Taxi.Models
{
    public class TaxiInfoSet
    {
        public List<TaxiInfo> TaxiInfoList { get; set; }

        public TaxiInfoSet(params TaxiInfo[] TaxiInfos)
        {
            TaxiInfoList = new List<TaxiInfo>();

            foreach(var TaxiInfo in TaxiInfos)
            {
                TaxiInfoList.Add(TaxiInfo);
            }
        }
    }
}

Jetzt haben wir in der Heimsteuerung die Standardaktion Index, die in diesem Beispiel zwei Taxifahrer erstellt und sie der in einer TaxiInfo enthaltenen Liste hinzufügt:

public ActionResult Index()
{
    var taxi1 = new TaxiInfo() { Fare = 20.2, Distance = 15, Driver = "Billy", StartLocation = "Perth", EndLocation = "Brisbane" };
    var taxi2 = new TaxiInfo() { Fare = 2339.2, Distance = 1500, Driver = "Smith", StartLocation = "Perth", EndLocation = "America" };

    return View(new TaxiInfoSet(taxi1,taxi2));
}

Der Code für die Ansicht lautet wie folgt:

@model Taxi.Models.TaxiInfoSet
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@foreach(var TaxiInfo in Model.TaxiInfoList){
    <form>
        <h1>Cost: [email protected]</h1>
        <h2>Distance: @(TaxiInfo.Distance) km</h2>
        <p>
            Our diver, @TaxiInfo.Driver will take you from @TaxiInfo.StartLocation to @TaxiInfo.EndLocation
        </p>
        @Html.ActionLink("Home","Booking",TaxiInfo)
    </form>
}

Der ActionLink ist verantwortlich für die Umleitung zur Buchungsaktion des Home Controllers (und die Übergabe des entsprechenden TaxiInfo-Objekts), das wie folgt defiend ist:

    public ActionResult Booking(TaxiInfo Taxi)
    {
        return View(Taxi);
    }

Dies gibt die folgende Ansicht zurück:

@model Taxi.Models.TaxiInfo

@{
    ViewBag.Title = "Booking";
}

<h2>Booking For</h2>
<h1>@Model.Driver, going from @Model.StartLocation to @Model.EndLocation (a total of @Model.Distance km) for [email protected]</h1>

Eine visuelle Tour:

The Index view

The Booking view

36
HennyH