Я получаю сообщение об ошибке при попытке передать более одного аргумента в частичное представление - PullRequest
0 голосов
/ 20 октября 2018

Я создаю фильтр из цветов.мы, я могу выбрать Цветы по цвету или по размеру или начальной цене. Это моя модель фильтра

 public class FilterController : Controller
{
    // GET: FilterModel
 private asp6Entities db = new asp6Entities();
    public ActionResult Index()
    {
        FilterModel model = new FilterModel();

        var color = db.COLORs.ToList().Select(s => new SelectListItem
        {
            Text = s.COLOR_NAME,
            Value = s.COLOR_ID.ToString()
        });

        var Size = db.FLOWERs.ToList().Select(s => new SelectListItem
        {
            Text = s.FLOWER_SIZE,
            Value = s.COLOR_ID.ToString()
        });

        var StartPrice = db.FLOWERs.ToList().Select(s => new SelectListItem
        {
            Text = s.FLOWER_PRICE.ToString(),
            Value = s.COLOR_ID.ToString()
        });

        var EndPrice = db.FLOWERs.ToList().Select(s => new SelectListItem
        {
            Text = s.FLOWER_PRICE.ToString(),
            Value = s.COLOR_ID.ToString()
        });

        return PartialView("~/Views/Shared/_FilterForm.cshtml", new FilterModel { AllColorOptions = color}, new FilterModel { AllSizeOptions = Size }, new FilterModel { AllStartingPriceOptions = StartPrice }, new FilterModel { AllEndingPriceOptions = EndPrice });
    }
}

Я получаю эту ошибку из частичного возврата.

CS1501 C #Перегрузка метода не требует 5 аргументов

Это домашний контроллер:

  [HttpPost]
    public ActionResult Index(FilterModel fromColorFilter)
    {
        int SelectedColor = int.Parse(fromColorFilter.ColorSelected);

        var allFlowers = db.FLOWERs.ToList();
        List<FLOWER> result = new List<FLOWER>();
        foreach (var flower in allFlowers)
        {
            if (flower.COLOR_ID == SelectedColor)
            {
                FLOWER model = new FLOWER();
                model = flower;
                result.Add(model);
            }
        }

        return View(result);
    }

Это мой _FilterForm частичный просмотр.

Я получаю выборбаза данных

<div class="FilterForm">
<form>
    <input type="text" placeholder="Search.." name="search" class="SearchInput">
</form>

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
    <h3>Filter Products</h3>
    <p>
        Color:
        @Html.DropDownListFor(s => s.ColorSelected, Model.AllColorOptions, "Please Choose a Color")
    </p>

    <p>
        Size:
        @Html.DropDownListFor(s => s.SizeSelected, Model.AllSizeOptions, "Please Choose a Size")
    </p>

    <p>
        Price :
        @Html.DropDownListFor(s => s.StartingPriceSelected, Model.AllStartingPriceOptions, "Please Choose a Size")) @Html.DropDownListFor(s => s.EndingPriceSelected, Model.AllEndingPriceOptions, "Please Choose a Size"))
    </p>

    <input type="submit" value="Filter" style="margin-left: 120px" />
}

И это модельная декларация. Используется

    public class FilterModel
{
    //declaring the colors selection
    public string ColorSelected { get; set; }

    //Creating the Size selection
    public string SizeSelected { get; set; }

    //Creating the starting price selection
    public int StartingPriceSelected { get; set; }

    //Creating Ends price Selection
    public int EndingPriceSelected { get; set; }


    //creating IEnumerable of all color options
    public IEnumerable<SelectListItem> AllColorOptions { get; set; }

    //creating IEnumerable of all Size Options
    public IEnumerable<SelectListItem> AllSizeOptions { get; set; }

    //creating IEnumerable of Starting Price Options
    public IEnumerable<SelectListItem> AllStartingPriceOptions { get; set; }

    //creating IEnumerable of Ending Price Options
    public IEnumerable<SelectListItem> AllEndingPriceOptions { get; set; }
}

1 Ответ

0 голосов
/ 20 октября 2018

Вам необходимо создать один объект класса FilterModel, установить различные свойства этого объекта и передать объект FilterModel в частичное представление.

var vm = new FilterModel();

//Set the different collection properties
vm.AllColorOptions = color;
vm.AllStartingPriceOptions = StartPrice;
vm.AllEndingPriceOptions = EndPrice;
vm.AllSizeOptions = Size;

// return the partial view while passing the view model object of the PartialView
return PartialView("~/Views/Shared/_FilterForm.cshtml", vm);

Предполагается, что ваше представление _FilterForm.cshtmlстрого типизирован до FilterModel класса.

...