过滤下拉列表值

时间:2014-01-17 10:06:05

标签: c# asp.net

我正在使用Entity Framework和asp.net mvc5开发简单的功能。

我想要的是什么:

我有设备制造商的数据库字典。 在网页上,我有2个下拉列表,其中包含制造商和产品名称。 它应该以完美的方式过滤“名称”​​下拉列表,使其仅包含所选制造商的产品。

我的问题:

有没有正确而简单的方法来实现我的工作,而不需要使用JS或js和过滤,其中一个下拉列表触发操作是唯一的解决方案?

我如何从数据库中读取数据:

public ActionResult Create()
    {
        var MList = new List<string>();
        var Query = from d in db.Dictionaries
                       orderby d.DeviceManufacturer
                       select d.DeviceManufacturer;
        MList.AddRange(Query.Distinct());
        var NList = new List<string>();
        Query = from d in db.Dictionaries
                orderby d.DeviceName
                select d.DeviceName;
        NList.AddRange(Query.Distinct());
        ViewBag.Manufacturers = new SelectList(MList);
        ViewBag.Names = new SelectList(NList);
        return View();
    }

我如何填充下拉列表:

<div class="form-group">
        @Html.DropDownList("Manufacturers");

    </div>

    <div class="form-group">
        @Html.DropDownList("Names");
    </div>

我的数据库架构(代码优先):

   public class Device
{
    public int DeviceId { get;set; }
    public string DeviceSerialNumber { get; set; }
    [Required]
    [StringLength(14)]
    public string DeviceUser { get; set; }
    public int DeviceDictionaryId { get; set; }
    [ForeignKey("DeviceDictionaryId")]
    public virtual DeviceDictionary DeviceDictionary {get;set;}
    public string Batch { get; set; }
}
 public class DeviceDictionary
{

    public int DeviceDictionaryId { get; set; }
    [Required]
    public string DeviceManufacturer { get; set; }
    [Required]
    public string DeviceName { get; set; }

}

1 个答案:

答案 0 :(得分:1)

如果您希望客户端发生事情,您必须使用JavaScript。

所以你认为做到这一点的方法是在第一个下拉列表中选择某个内容并给用户一个“新”页面时调用一个动作是正确的。