Meine Ansicht Modell wie folgt aussieht:assign Select basierend auf einem anderen
public IList<TeamCategory> TeamCategories { get; set; }
public IEnumerable<SelectListItem> TeamCategoriesList { get; set; }
public IList<CategoryInput> CategoryInputs { get; set; }
public class CategoryInput
{
public string CategoryName { get; set; }
public IEnumerable<SelectListItem> VenueList { get; set; }
}
Abfrage:
foreach (var teamCategory in model.TeamCategories)
{
var categoryInput = new CategoryInput()
{
CategoryName = teamCategory.Name,
VenueList = teamCategory.Venues.Select(x => new SelectListItem()
{
Value = x.Id,
Text = x.Address
}),
};
model.CategoryInputs.Add(categoryInput);
}
Ausblick:
@Html.DropDownList("TeamCategory", Model.TeamCategoriesList, new {@id = "categorieslist"})
@Html.DropDownList("Venue", new List<SelectListItem>(), new {@id = "venuelist" })
So beginnt es mit teamcategories Liste wird bevölkert aus, und eine leere Veranstaltungsliste. Wenn ich die Kategorie ändere, möchte ich, dass die Veranstaltungsliste auf die mit dieser Kategorie verknüpfte Liste aktualisiert wird y wie aus der Abfrage ersichtlich ist.
$('#categorieslist').change(function() {
AssignVenues();
});
function AssignVenues() {
var category = $('#categorieslist').val();
}
fantastische Liste SelectListItem des zurückgibt! Es funktioniert fast 100%, das Problem, dem ich begegne, ist die Übergabe des Parameters teamcategoryId. Mit dem Code wie es ist nur versucht, nach einer URL zu suchen, die wie folgt aussieht: http: // localhost: 8050/mein-tennis-club/161/team-getvenuesanother% 20one (wo 'eine andere' ist der Kategoriename). Wenn ich diesen Teil ablege, funktioniert es perfekt. Wie kann ich diesen Parameter übergeben? Ich habe versucht die URL.action zu @ Url.Action ("GetVenues", "Home", neue {ID = teamcaegoryID}), aber natürlich wird es nicht erkennen, die Variable in Rasierer – BMills
'@ Url.Action (" GetVenues " , "Home", neu {id = teamcaegoryID}) wird nicht funktionieren, da die Methode Url.Action auf dem Server vor dem Änderungsereignis im Javascript ausgeführt wird. Also müssen Sie den JavaScript-Variablenwert manuell an das Ergebnis von '@ Url.Action (" GetVenues "," Home ")" – Shyju
richtig anfügen, ich habe es funktioniert, indem ich es in folgendes ändere: $ .getJSON ('@ Url. Action ("GetVenues", "Team") "+"? CategoryId = "+ category ... vielleicht könntest du deine Antwort ändern. Vielen Dank Shyju, ich bin jetzt auf dem Weg, Ajax zu verstehen und es nutzen zu können ! :-) – BMills