Здравствуйте! У меня проект asp.net core mvc. И вот такая форма для ввода
данных из списка, который формируется из таблицы в бд.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<form class="col-form-label">
<select name="typeid" class="form-control">
@foreach (TypeModel tp in Model.GoodTypes)
{
<option value="@tp.TypeID">@tp.TypeName</option>
}
</select>
<select name="manid" class="form-control">
@foreach (ManufModel mm in Model.GoodManuf)
{
<option value="@mm.ManufID">@mm.ManufacName</option>
}
</select>
<select name="widhtid" class="form-control">
@foreach (WidhtModel wm in Model.GoodWidht)
{
<option value="@wm.WidhtID">@wm.WidhtSize.ToString()</option>
}
</select>
<select name="lengthid" class="form-control">
@foreach (LengthModel lm in Model.Goodlengh)
{
<option value="@lm.LenghtIDSize">@lm.LenghtIDSize </option>
}
</select>
<input type="submit" />
</form>
Всего четыре поля. Нужно, что бы при вводе значения в одном из полей, значения в остальных полях фильтровались бы исходя из реальных остатков товара в базе данных. Где можно реализовать данный фильтр? В контроллере? Не будет ли он медленно работать? Может быть есть какой то более красивый способ?
Вот контроллер.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
public class HomeController : Controller
{
public IActionResult Index(int? typeid, int? manid, int? widhtid, int? lengthid )
{
using (Point4Context db = new Point4Context())
{
List<ViewGoodsStocksMvc> goodstocks = db.ViewGoodsStocksMvc.ToList();
List<Types> types = db.Types.ToList();
List<Manufacturers> manufacturers = db.Manufacturers.ToList();
List<WidhtSizes> widhtSizes = db.WidhtSizes.ToList();
List<LenghtSizes> lenghtSizes = db.LenghtSizes.ToList();
//Список типов
List<TypeModel> typeModels = types
.Select(c => new TypeModel { TypeID = c.TypeId, TypeName = c.Type })
.ToList();
//добавить пустой тип на 1 место
typeModels.Insert(0, new TypeModel {TypeID = 0, TypeName = "Вид одежды"});
//список производителей
List<ManufModel> manModels = manufacturers
.Select(c => new ManufModel { ManufID = c.ManufacturerId, ManufacName = c.ManufName })
.ToList();
//добавить пустого производителя на 1 место
manModels.Insert(0, new ManufModel { ManufID = 0, ManufacName = "Бренд" });
//Список W
List<WidhtModel> widhtModels = widhtSizes
.Select(c => new WidhtModel { WidhtID = c.WidhtId, WidhtSize = c.Widht })
.ToList();
//пустой W на 1 место
widhtModels.Insert(0, new WidhtModel { WidhtID = 0, WidhtSize = "Размер" });
//список L
List<LengthModel> lengthModels = lenghtSizes
.Select(c => new LengthModel { LenghtIDSize = c.LenghtId })
.ToList();
//Пустой L на 1 место
lengthModels.Insert(0, new LengthModel { LenghtIDSize = 100 });
IndexViewModel ivm = new IndexViewModel
{GoodTypes = typeModels, GoodStock=goodstocks,GoodManuf=manModels, GoodWidht=widhtModels, Goodlengh = lengthModels };
//если передан ID типа , формируруем список
if (typeid != null && typeid > 0 && manid != null && manid > 0 && widhtid != null && widhtid > 0 && lengthid != 100)
{
ivm.GoodStock = goodstocks
.Where(p => p.TypeId == typeid)
.Where(p=> p.ManufacturerId == manid)
.Where(p=> p.WidhtId == widhtid)
.Where(p=> p.LenghtId== lengthid);
}
return View(ivm);
}
}
}