2

我已经能够找到很多将下拉列表添加到视图的示例,但我需要将下拉列表添加到也有 Webgrid 的视图中。这需要两种不同的模型,据我所知,每个视图只能有一个。

DDL 将由一个模型填充,而网格则由另一个模型填充。

我只是想用 ddl 中选择的数据过滤网格中显示的数据。

任何示例或文章将不胜感激。

TIA

4

2 回答 2

6

创建一个ViewModel包含网格和DropDownList. 将此ViewModel对象用作视图的模型。

有关实现该模式的不同策略,请参阅Steve Michelotti 的帖子。ViewModel

像这样的东西,例如:

public class MyViewModel
{
    public List<Row> RowsForGrid { get; set; }
    public SelectList ItemsForDropdown { get; set; }
}
于 2012-07-02T20:23:38.993 回答
3

由于您试图过滤网格中显示的数据,我会这样做:

在主视图中,我会调用一个partial view. 在您的情况下,部分视图将保存DropDownList数据。像这样的东西:

@Html.Partial("DropDownView", ViewBag.DropDownViewModel as DropDownViewModel)

在您的控制器操作中,您将填充DropDownViewModel数据DropDownList并将其传递DropDownViewModelViewBag这样的:

DropDownViewModel dropDownViewModel = new DropDownViewModel();
DropDownViewModel.Items = GetDropDownData(); // Fetch the items...

ViewBag.DropDownViewModel = dropDownViewModel;

视图模型 (DropDownViewModel.cs)

public class DropDownViewModel
{
    public SelectList Items { get; set; }
}

局部视图 (DropDownView.cshtml)

@model DropDownViewModel

@using (Html.BeginForm("YourControllerAction", "YourControllerName", FormMethod.Get))
{       
        @Html.Label("Search")&nbsp;@Html.DropDownList("YourDataId", Model.Items, String.Empty)

        <input type="submit" value="Search" id="submit"/>
}

"YourDataId"将是操作方法的参数,并将包含用户选择的值,如下所示:

public virtual ActionResult Index(int? YourDataId, GridSortOptions sort)
{
    ...
}
于 2012-07-02T20:28:35.700 回答