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
Doppelpost (http://www.aspnetzone.de/forums/thread/224788.aspx)
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
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
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?
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
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!)
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code