Asp.net mvc 动态填充下拉列表

Asp.net mvc 动态填充下拉列表,asp.net-mvc,dynamic,listbox,Asp.net Mvc,Dynamic,Listbox,所以我在ASP.NETMVC4中工作,我想动态加载dropdownlist 这是我的模型课: 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

所以我在ASP.NETMVC4中工作,我想动态加载dropdownlist

这是我的模型课:

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>(); 
    }
}
这就是这种方法的观点:

@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")
}
@model Project.Domain.POCO.Meeting
创造
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
会合
@LabelFor(model=>model.Name)
@EditorFor(model=>model.Name)
@Html.ValidationMessageFor(model=>model.Name)
@Html.DisplayName(“国家”)
@Html.DropDownList(“CountryId”,“选择一个国家”)
@LabelFor(model=>model.Location)
@EditorFor(model=>model.Location)
@Html.ValidationMessageFor(model=>model.Location)
@Html.DisplayName(“开始日期”)
@EditorFor(model=>model.StartDate)
@Html.ValidationMessageFor(model=>model.StartDate)
@Html.DisplayName(“结束日期”)
@EditorFor(model=>model.EndDate)
@Html.ValidationMessageFor(model=>model.EndDate)
@Html.Label(“运动类型”)
@RadioButton(m=>m.Sport,“游泳”)游泳
@RadioButton(m=>m.Sport,“Athletics”)Athletics
@标签(“选择事件”)
@Html.ListBoxFor(model=>model.selectedEvents,新的MultiSelectList(ViewBag.AvailableEvents,“EventId”,“规程”,model.selectedEvents),新的{@class=“superselect”})
@Html.Label(“选择团队”)
@Html.ListBoxFor(model=>model.SelectedTeamIds,新的多重选择列表(ViewBag.AvailableTeams,“TeamId”,“TeamId”,model.SelectedTeamIds),新的{@class=“superselect”})

} @ActionLink(“返回列表”、“索引”) @节脚本{ @Scripts.Render(“~/bundles/jqueryval”) @style.Render(“~/Content/Css/UserInterface.Css”) }
会议由许多事件组成。
因此,问题是在具有事件的列表框中,如何仅动态加载属于我先前选择的会议的事件。我对全能谷歌做了一些研究,但我得到的都是涉及javascript/jquery的答案,因为我对这方面的知识基本为零,所以我希望在可能的情况下用另一种方式解决这个问题。如果没有,你能简单地解释一下我需要做什么,我正在做什么吗。提前感谢。

我认为没有jquery或javascript就无法实现它。如果你想使用ASP.NETMVC,你应该熟悉jquery,它至关重要。 以下是一些可能对您有所帮助的提示:

  • 更改第一个下拉列表的选择是一个可以更改的事件 被jquery捕获
  • jquery函数可以将所选值发布到 服务器并接收第二个下拉列表的相关数据
  • 第二个下拉列表可以通过向空下拉列表添加选项来填充。如果第二个下拉列表取决于第一个下拉列表的选择,则不必在第一个位置填写。但每次选择第一个下拉列表时,您都必须删除所有项目(选项)

但是,还有另一个名为ASP.NET Webforms的选项,您可以在VS工具的帮助下定义事件处理。

您可以同时避免使用jquery并使用LiteralControl类


最简单的方法是使用jquery,但这并不能真正解释我想要实现的目标
@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")
}