2013-05-17 4 views
0

Итак, я работаю в ASP.NET MVC4, и я хочу динамически загружать выпадающий список.Динамическое заполнение динамического списка

Это мой modelclass:

public class Meeting 
{ 
public int MeetingId { get; set; } 
[Required(ErrorMessage = "A name is required")] 
public String Name { get; set; } 
[Required(ErrorMessage = "Location is required")] 
public String Location { get; set; } 
[Required(ErrorMessage = "A start date is required")] 
[DataType(DataType.Date)] 
public DateTime StartDate { get; set; } 
[DataType(DataType.Date)] 
[DateGreaterThan("StartDate")] 
public DateTime? EndDate { get; set; } 

public int? CountryId { get; set; } 
public virtual Country Country { get; set; } 
public String Sport { get; set; } 

public List<string> SelectedTeamIds { get; set; } 
public virtual List<TeamViewModel> SelectedTeams { get; set; } 

public List<int> SelectedEventIds { get; set; } 
public virtual List<EventViewModel> SelectedEvents { get; set; } 



    public Meeting() 
    { 
    SelectedTeamIds = new List<string>(); 
    SelectedTeams = new List<TeamViewModel>(); 

    SelectedEventIds = new List<int>(); 
    SelectedEvents = new List<EventViewModel>(); 
    } 
} 

Это мой controllermethod Я заинтересован в:

public ActionResult Create() 
{ 
    ViewBag.CountryId = new MultiSelectList(db.Countries, "CountryId", "CountryName"); 
    ViewBag.AvailableEvents = db.Events.Where(e => e.SchoolcupEvent == true); 
    ViewBag.AvailableTeams = db.Teams; 
    var model = new Meeting(); 
    return View(model); 
} 

И это мнение этого метода:

@model Project.Domain.POCO.Meeting 

<h2>Create</h2> 
@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 

<fieldset> 
    <legend>Meeting</legend> 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.Name) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Name) 
     @Html.ValidationMessageFor(model => model.Name) 
    </div> 
    <div class="editor-label"> 
     @Html.DisplayName("Country") 
    </div> 
    <div class="editor-field"> 
     @Html.DropDownList("CountryId", "Pick a country") 
    </div> 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.Location) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Location) 
     @Html.ValidationMessageFor(model => model.Location) 
    </div> 
    <div class="editor-label"> 
     @Html.DisplayName("Start Date") 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.StartDate) 
     @Html.ValidationMessageFor(model => model.StartDate) 
    </div> 
    <div class="editor-label"> 
     @Html.DisplayName("End Date") 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.EndDate) 
     @Html.ValidationMessageFor(model => model.EndDate) 
    </div> 
    <div class="editor-label"> 
     @Html.Label("Sports type") 
    </div> 
    <div class="editor-field"> 
     @Html.RadioButtonFor(m => m.Sport, "Swimming") Swimming 
     @Html.RadioButtonFor(m => m.Sport, "Athletics") Athletics 
    </div> 

    <div class="editor-label"> 
     @Html.Label("Select Event(s)") 
    </div> 
    <div class="editor-field"> 
     @Html.ListBoxFor(model => model.SelectedEventIds, new MultiSelectList(ViewBag.AvailableEvents, "EventId", "Discipline", Model.SelectedEventIds), new { @class = "superselect" }) 
    </div> 
    <div class="editor-label"> 
     @Html.Label("Select Team(s)") 
    </div> 
    <div class="editor-field"> 
     @Html.ListBoxFor(model => model.SelectedTeamIds, new MultiSelectList(ViewBag.AvailableTeams, "TeamId", "TeamId", Model.SelectedTeamIds), new { @class = "superselect" }) 
    </div> 
    <p class="Button"> 
     <input type="submit" /> 
    </p> 
</fieldset> 
} 
<div> 
@Html.ActionLink("Back to List", "Index") 
</div> 
@section Scripts { 
@Scripts.Render("~/bundles/jqueryval") 
@Styles.Render("~/Content/Css/UserInterface.css") 
} 

встреча состоит из ряда событий. Итак, проблема в ListBox с событиями, как я могу динамически загружать только события, принадлежащие ранее выбранному собранию. Я провел некоторое исследование по всему весомому Google, но все, что я получаю, - это ответы, связанные с javascript/jquery, и, поскольку мои знания в основном о них, я надеялся решить это по-другому, если это возможно. Если нет, не могли бы вы объяснить мне, что мне нужно делать, и что я делаю. Заранее спасибо.

+0

самый простой способ заключается в использовании JQuery см http://www.billsternberger.net/asp-net-mvc/dynamically-populate-dropdownlist-in-asp-net-mvc/ –

+0

Это Безразлично» я действительно объясняю, чего хочу достичь, хотя –

ответ

1

Я думаю, что нет возможности реализовать это без jquery или javascript. Если вы хотите использовать ASP.NET MVC, вы должны ознакомиться с jquery, его жизненно важным. Для ваших здесь некоторых подсказок, которые могут помочь:

  • изменения выбора 1-го выпадающего списка событие, которое может быть пойманным с помощью JQuery
  • функции
  • JQuery может после выбранного значения и получите соответствующие данные для второго выпадающего списка.
  • второе выпадающее меню может быть заполнено append опции для раскрывающегося списка. Если второе выпадающее меню зависит от выбора первого выпадающего меню, вам не нужно его заполнять в первую очередь. Но вы должны Удалить все элементов (опция) каждый раз, когда выбор 1-го выпадающего списка изменяется

Однако, есть еще один вариант под названием ASP.NET WebForms, где вы можете определить eventhandling с помощью VS-инструментов ,

Смежные вопросы