ich einen Blick an der richtigen Stelle, die 2 @ DropDownListFor Helfer enthält:Populate Dropdownlist mit AJAX MVC 4
@using (Html.BeginForm("CreateOneWayTrip", "Trips"))
{
@Html.ValidationSummary(false);
<fieldset>
<legend>Enter Your Trip Details</legend>
<label>Start Point</label>
@Html.DropDownListFor(m => m.StartPointProvince, (SelectList)ViewBag.Provinces, new { @Id = "province_dll", @class = "form-control" })
@Html.DropDownListFor(m => m.StartPointCity, (SelectList)ViewBag.Cities, new { @Id = "city_dll", @class = "form-control" })
<p style="float: none; text-align: center;">
<button type="submit" value="Create" class="btn btn-info btn-circle btn-lg">
<i class="fa fa-check"></i>
</button>
<button type="submit" value="Create" class="btn btn-warning btn-circle btn-lg">
<i class="fa fa-times"></i>
</button>
</p>
</fieldset>
}
Hier ist die temporäre Modell, das ich verwenden, um Daten zu erfassen:
public class CaptureCreateTrip
{
[Required]
[Display(Name = "Trip ID")]
public string TripID { get; set; }
[Required]
public string StartPointProvince { get; set; }
[Required]
public string StartPointCity { get; set; }
}
Einer der DropDownLists werden beim Erstellen der Seite ausgefüllt und die zweite wird basierend auf der Option gefüllt, die der Benutzer in der ersten DropDownList auswählt. Um dies zu erreichen, benutze ich Ajax. Die Javascript Ich benutze sieht wie folgt aus:
$("#province_dll").change(function() {
$.ajax({
url: 'getCities/Trips',
type: 'post',
data: {
provinceId: $("#province_dll").val()
}
}).done(function (response) {
$("cities_dll").html(response);
});
});
Hier ist der Controller die AJAX-Aufrufe:
[HttpPost]
public ActionResult getCicites(int provinceId)
{
var lstCities = new SelectList(new[] { "City1", "City2", "City3" });
return Content(String.Join("", lstCities));
}
Bis zu diesem Punkt alles funktioniert - Wenn ich einen Wert wählen, in Meine Provinz DropDown Das JavaScript-Ereignis wird ausgelöst und die Controller-Aktion gibt die Auswahllistenwerte an Cities DropDown zurück, das Problem ist jedoch, dass die von der Aktion zurückgegebenen Daten (des Formats der Daten) nicht korrekt sind. Ich habe dies getestet, indem ich ein Paragraph-Element erstellt und seinen Text mit dem Rückgabewert des Ajax-Aufrufs aktualisiert habe, nämlich: "System.Web.Mvc.SelectListItemSystem.Web.Mvc.SelectListItemSystem.Web.Mvc.Select ListItem"
* Hinweis: Ich bin neu bei Ajax und im Prozess des Lernens von Jquery und AJAX.
in Ihrem ge tCities-Aktion, können Sie "var options = String.Join (" ", lstCities); return Inhalt (Optionen); "statt" return Content (String.Join ("", lstCities "));" und dann Optionen vor dem Zurückkehren überprüfen, um zu sehen, was es speichert? –