使用MVC 2中的对象从另一个下拉列表填充下拉列表

时间:2010-12-05 21:15:32

标签: asp.net asp.net-mvc-2 drop-down-menu

我正在尝试为我的小型企业开发一个简单的MVC 2时间表应用程序。

我现在有一种模拟模型,直到我有一个数据库,只是为了让我在开发功能时更简单。它由以下内容组成:

public class CustomersRepository
{
    public CustomersRepository()
    {
        Customers = new List<Customer>();
    }

    public List<Customer> Customers { get; set; }
}    

public class Task
{
    public Task()
    {
        Customer = new Customer();
        TimeSegments = new List<TimeSegment>();
    }
    public override string ToString()
    {
        return Name;
    }
    public string Name { get; set; }
    public Customer Customer { get; set; }
    public List<TimeSegment> TimeSegments { get; set; }

}

public class TimeSegment
{
    public string Id { get; set; }
    public string Date { get; set; }
    public int Hours { get; set; }

}

public class Customer
{
    //To show the name in the combobox instead of the object name.
    public override string ToString()
    {
        return Name;
    }
    public Customer()
    {
        Tasks = new List<Task>();
    }

    public List<Task> Tasks { get; set; }
    public string Name { get; set; }

}

我在控制器中初始化存储库,并将“模型”传递给视图:

    CustomersRepository model = new CustomersRepository();

    public ActionResult Index()
    {
        InitializeRepository();
        return View(model);
    }

现在,在视图中,我向客户填充了一个下拉列表:

    <div>
        <%:Html.DropDownListFor(m => m.Customers, new SelectList(Model.Customers), new {@id="customerDropDownList"}) %>
    </div>

但是我需要根据用户在客户下拉列表中选择的选项填充第二个下拉列表(taskDropDownList,用于与特定客户关联的任务)。

但我该怎么做呢?我见过jQuery的例子,但我不确定如何将它们应用于这种情况。此外,示例似乎只是用字符串值填充列表。我需要能够访问具有所有属性的对象。因为我需要做的下一件事是能够使用输入字段中的值(即特定日期的工作小时数)填充所选任务的TimeSegments列表。并且为了将其保存到控制器中的“模型”(最终到数据库),我该如何获取它,除非对象都是绑定到View的同一模型的一部分?

我用相当薄的冰,因为我仍然发现View和Controller之间的连接难以处理,与例如Windows开发,这些东西很容易做到。所以如果有人愿意提供这样的话,我会非常感谢一步一步的好例子!

1 个答案:

答案 0 :(得分:0)

我在这里找到答案: http://www.pieterg.com/post/2010/04/12/Cascading-DropDownList-with-ASPNET-MVC-and-JQuery.aspx

需要一些调整,我从CGK那里得到了帮助。看这篇文章:

Cascading dropdownlist with mvc and jQuery not working