Laden...

MVC Submit value from View to Controller

Erstellt von smichae vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.257 Views
S
smichae Themenstarter:in
260 Beiträge seit 2007
vor 11 Jahren
MVC Submit value from View to Controller

Hallo,

ich habe eine DropDownListe in einer View.
Bei einer Änderung der Auswahl möchte ich in den Controller gehen und auf den ausgewählten Wert reagieren und dann eine TextBox in der View füllen.

Meine DropDownListe in der View sieht wie folgt aus:


@Html.DropDownList("CarId", ((IEnumerable<Voith.Web.PKWRequest_VHH.Models.Car>)ViewBag.PossibleCars).Select(option => new SelectListItem
                   {
                       Text = Html.DisplayTextFor(_ => option.CarDescription).ToString(),
                       Value = option.CarId.ToString(),
                       Selected = (Model != null) && (option.CarId == Model.CarId)
                   }), "Choose...", new { onchange = "return TestMethod(this)" })
                        @Html.ValidationMessageFor(model => model.CarId)

<script type="text/javascript">
        function TestMethod(action) {
            var val = action.options[action.selectedIndex].value;
            window.alert(val);
            var form = document.forms[0];
            form.action = 'CarId';
            form.value = val;
            form.submit();
       }
</script>

Im Controller habe ich die Funktion CarId, in die ich auch komme, allerdings weiß ich nicht wie ich an den Wert komm.

Hier der Controller:


[HttpPost]
        public ActionResult CarId(string carId) 
        {
            string asd = Request["carId"];
            return null;
        }

Danke,
Michael

5.942 Beiträge seit 2005
vor 11 Jahren

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

5.942 Beiträge seit 2005
vor 11 Jahren

Hallo smichael

Wieso holst du dir nicht dein Objekt anhand der ID aus deiner Datenquelle?

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

2.891 Beiträge seit 2004
vor 11 Jahren

Im Controller habe ich die Funktion CarId, in die ich auch komme, allerdings weiß ich nicht wie ich an den Wert komm.

Welchen Wert meinst du genau? An die ausgewählte CarID kommst du direkt über den Parameter deiner Action. Oder funktioniert das schon nicht?

S
smichae Themenstarter:in
260 Beiträge seit 2007
vor 11 Jahren

Bei dem Alert-Window zeigt es mir die ID an.
Im Controller weiß ich aber nicht wie ich an die ID rankomme.
Weder über den string carId noch über Request["CarId"] komm ich an den Wert.

@Peter Bucher: Du meinst aus der DB? Dann brauch ich den Wert doch auch im Controller?!
Oder versteh ich dich falsch?

Danke.
Michael

16.842 Beiträge seit 2008
vor 11 Jahren

Einfach den Parameter in die Parameterliste der Action hinzufuegen oder ein Model erstellen, dass CarID inne hat und dieser der Action hinzufuegen (zweiteres ist zu empfehlen).

Aber Deine JS TestMethod erstellt in meinen Augen kein gueltigen Submit dar, weshalb dieses bei der Webanwendung auch nicht korrekt ankommt.
Mittels Firebug kann man ja einfach sehen, was wirklich an den Server geschickt wird.

Ich wuerde das mit jQuery loesen und das Modell der Droplist nicht automatisch generieren lassen, sondern mit echtem HTML arbeiten und nur ne SelectListItem vom Controller an die View uebergeben (keine Logik in der View!)