在我的MVC4应用程序中,我有两个模型,分别是User
和Schedule
,如下所示:
public class User {
public int UserId { get; set; }
public string Name { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public bool isAvailable { get; set; }
}
public class Schedule
{
public int ScheduleId{ get; set; }
public DateTime Date { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
}
现在,我想制作一个页面,该页面将显示一个表格,其中包含本月的日期以及第二天的
DropDownLists
(每天),所有用户的isAvailable
在列表中为true。将使用此页面,以便管理员可以制定时间表(我也将开放以进行改进,以实现此功能)并在每个工作日中选择一个用户。我要这样做,以便一旦在一个DropDownList
中选择了一个用户,该用户就会从另一个DropDownLists
中消失。Controller 和 View 现在看起来如下, Controller :
public ActionResult Schedule()
{
ViewBag.UserId = new SelectList(db.Users, "UserId", "FullName");
return View();
}
View :
@model IEnumerable<seashell_brawl_corvee.Models.Schedule>
@{
ViewBag.Title = "Schedule";
}
<fieldset>
<legend>@ViewBag.Title</legend>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table class="table">
<thead>
<tr>
<th>Date
</th>
<th>Select person
</th>
</tr>
</thead>
@{ DateTime dt = DateTime.Now; }
@for (double i = 0.0; i < 60.0; i++)
{
dt = dt.AddDays(1);
if (dt.Date.DayOfWeek != DayOfWeek.Saturday &&
dt.Date.DayOfWeek != DayOfWeek.Sunday)
{
<tbody>
<tr>
<td>
@dt.Date.ToLongDateString()
</td>
<td>
@Html.DropDownList("UserId", String.Empty)
</td>
</tr>
</tbody>
}
else
{
<tbody>
<tr></tr>
</tbody>
}
}
</table>
@TODO: Submit button and controller POST action that reads the dates and names
from the dropdownlists, puts them into arrays and then into the database.
}
</fieldset>
我知道我需要JavaScript / JSON来使DropDownLists相互依赖,并且一旦选择它们就不再显示名称,但是我不知道要如何精确地完成此操作。如果有人可以进一步帮助我,我将不胜感激!
最佳答案
我有一个使用JQuery的方法,请检查以下示例:
http://jsfiddle.net/vt3Ma/4/
使用focus()事件将恢复2个隐藏字段中的当前选项值和文本
$('.ddl').focus(function(){
$("#oldValue").val($(this).val());
$("#oldText").val($("option:selected",$(this)).text());
});
然后在change()事件上:
1-现在将以前选择的选项变为可用,因此会将下拉列表的旧更改选项添加到其他下拉列表中。
$(this).prepend("<option value='"+$("#oldValue").val()+"'>"+$("#oldText").val()+"</option>");
2-将从所有其他下拉列表中删除新选择的选项
$("option[value='" + current.val() + "']",$(this)).remove();
关于c# - 使DropDownLists相互依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20804389/