Asp.net mvc 在mvc 3中将项目填充到dropdownlist而不是表中
目前,我正在为每个表填充使用的项,下面是代码: 更新:_FilterSpecsBox.cshtmlAsp.net mvc 在mvc 3中将项目填充到dropdownlist而不是表中,asp.net-mvc,asp.net-mvc-3,drop-down-menu,Asp.net Mvc,Asp.net Mvc 3,Drop Down Menu,目前,我正在为每个表填充使用的项,下面是代码: 更新:_FilterSpecsBox.cshtml @model CatalogPagingFilteringModel.SpecificationFilterModel @{ var renderedAttributeNames = new List<string>(); } <div class="product-spec-filt
@model CatalogPagingFilteringModel.SpecificationFilterModel
@{
var renderedAttributeNames = new List<string>();
}
<div class="product-spec-filter">
@* <div class="title">
@T("Filtering.SpecificationFilter")
</div>*@
@*<div class="clear">
</div>*@
@if (Model.NotFilteredItems.Count > 0)
{
<div>
<table class="filter">
@foreach (var item in Model.NotFilteredItems)
{
if (!renderedAttributeNames.Contains(item.SpecificationAttributeName))
{
renderedAttributeNames.Add(item.SpecificationAttributeName);
<tr class="group">
<td>
@item.SpecificationAttributeName
</td>
</tr>
}
<tr class="item">
<td>
**<a href="@item.FilterUrl">@item.SpecificationAttributeOptionName</a>**
</td>
</tr>
}
</table>
</div>
}
@if (Model.AlreadyFilteredItems.Count > 0)
{
<div>
<div class="title">
@T("Filtering.SpecificationFilter.CurrentlyFilteredBy")
</div>
<table class="filter">
@foreach (var item in Model.AlreadyFilteredItems)
{
<tr class="filtereditem">
<td>
<b>@(item.SpecificationAttributeName):</b> @item.SpecificationAttributeOptionName
</td>
</tr>
}
</table>
</div>
<div class="remove-filter">
<a href="@Model.RemoveFilterUrl" class="remove-product-spec-filter">@T("Filtering.SpecificationFilter.Remove")</a>
</div>
}
</div>
@model cataloggingfilteringmodel.SpecificationFilterModel
@{
var renderedAttributeNames=新列表();
}
@*
@T(“过滤.规格过滤器”)
*@
@*
*@
@如果(Model.NotFilteredItems.Count>0)
{
@foreach(Model.NotFilteredItems中的变量项)
{
如果(!renderAttributeName.Contains(item.SpecificationAttributeName))
{
添加(item.SpecificationAttributeName);
@item.Specification属性名称
}
****
}
}
@如果(Model.AlreadyFilteredItems.Count>0)
{
@T(“筛选.规格筛选.当前筛选依据”)
@foreach(Model.AlreadyFilteredItems中的变量项)
{
@(item.SpecificationAttributeName):@item.SpecificationAttributeOptionName
}
}
我想在dropdownlist中填充@item.FilterUrl,任何人都可以提供如何实现这一点的帮助
更新:_filter.cshtml
@*filtering*@
@if (Model.PagingFilteringContext.PriceRangeFilter.Enabled ||
Model.PagingFilteringContext.SpecificationFilter.Enabled)
{
<div class="product-filters">
<div class="filter-title">
<span>Filter Products By Analytes</span>
</div>
@* <div class="filter-item">
@Html.Partial("_FilterPriceBox", Model.PagingFilteringContext.PriceRangeFilter, new ViewDataDictionary())
</div>*@
<div class="filter-item">
@Html.Partial("_FilterSpecsBox", Model.PagingFilteringContext.SpecificationFilter, new ViewDataDictionary())
</div>
</div>
<div class="clear">
</div>
}
@*过滤*@
@如果(Model.PagingFilteringContext.PriceRangeFilter.Enabled||
Model.PagingFilteringContext.SpecificationFilter.Enabled)
{
通过分析物过滤产品
@*
@Html.Partial(“\u FilterPriceBox”,Model.PagingFilteringContext.PriceRangeFilter,new ViewDataDictionary())
*@
@Html.Partial(“_FilterSpecsBox”,Model.PagingFilteringContext.SpecificationFilter,new ViewDataDictionary())
}
@model cataloggingfilteringmodel.SpecificationFilterModel
@如果(Model.NotFilteredItems.Count>0)
{
@DropDownList(“NotFilteredItem”,新选择列表(Model.NotFilteredItems,“SpecificationAttributeName”,“SpecificationAttributeName”))
}
@如果(Model.AlreadyFilteredItems.Count>0)
{
@T(“筛选.规格筛选.当前筛选依据”)
@Html.DropDownList(“FilteredItem”,新选择列表(Model.AlreadyFilteredItems,“SpecificationAttributeName”,“SpecificationAttributeOptionName”))
}
但我现在无法进行过滤,在上面的代码中,它正在进行过滤,但在左中部选择了“按过滤产品”的任何属性analyte@Mr答:过滤应该在控制器中进行,而不是在视图中。控制器应该准备视图模型的NotFilteredItems和AlreadyFilteredItems属性,以便视图所要做的就是按原样使用它们。否则,如果您开始在视图中执行过滤和其他操作,则违反了MVC模式。视图不应操作任何数据。它只是以视图模型的形式显示控制器提供的数据。因此,如果您的视图模型不适合,则调整它并在控制器中执行繁重的工作。
@model CatalogPagingFilteringModel.SpecificationFilterModel
<div class="product-spec-filter">
@if (Model.NotFilteredItems.Count > 0)
{
<div>
@Html.DropDownList("NotFilteredItem", new SelectList(Model.NotFilteredItems, "SpecificationAttributeName", "SpecificationAttributeName"))
</div>
}
@if (Model.AlreadyFilteredItems.Count > 0)
{
<div class="title">
@T("Filtering.SpecificationFilter.CurrentlyFilteredBy")
</div>
<div>
@Html.DropDownList("FilteredItem", new SelectList(Model.AlreadyFilteredItems, "SpecificationAttributeName", "SpecificationAttributeOptionName"))
</div>
<div class="remove-filter">
<a href="@Model.RemoveFilterUrl" class="remove-product-spec-filter">@T("Filtering.SpecificationFilter.Remove")</a>
</div>
}
</div>