使用MVC View过滤IEnumerable

时间:2012-12-17 05:31:53

标签: asp.net-mvc-4

在MVC4中,需要列出一组客户端。我通过创建2个模型ClientList和Client模型来实现这一点。我将ClientList类设置为可序列化。现在需要为此模型应用具有各种参数的过滤条件。怎么做到这一点?这是我的模特。

public class Client : Paging
{
    public virtual string CompanyName { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
}

[Serializable]
public class ClientList : Paging
{
    private Client _client;
    public Client Client
    {
        get { return _client; }
        set { _client = value;  }
    }
}

在数据访问中,我正在使用此

while (reader.Read())
                    {
                        var rCompanyName = reader.GetOrdinal("CompanyName");
                        var rFirstName = reader.GetOrdinal("FirstName");
                        var rLastName = reader.GetOrdinal("LastName");

                        var resultClientList = new Client
                                                   {
                                                       CompanyName = Convert.IsDBNull(rCompanyName) ? string.Empty : reader.GetString(rCompanyName),
                                                       FirstName = Convert.IsDBNull(rFirstName) ? string.Empty : reader.GetString(rFirstName),
                                                       LastName = Convert.IsDBNull(rLastName) ? string.Empty : reader.GetString(rLastName)

                                                   };
                        var clients = new ClientList();
                        admin.Client = resultClientList;
                        result.Data.Add(clients);
                    }

在视图中,

@model IEnumerable<Midlab.FreightOnce.BusinessObjects.ClientList
@*i need filter condition here*@
@foreach (var item in Model)
{
--rendering list here
}

由于

1 个答案:

答案 0 :(得分:1)

对于初学者,我建议的最简单的方法是,在控制器中制作两种不同的方法,以及与这些控制器相关的两种视图。第一个控制器函数将是一个get函数,与此相关的视图将打开过滤器列表,用户将选择过滤条件并提交它,作为post函数的第二个控制器函数将接收请求,根据过滤条件获取记录和将IEnumerable列表中的响应返回给第二个视图。另一种方法是使用JQuery.ajax调用。