Я застрял в очень распространенной проблеме, в моем приложении я хочу поместить поиск-navbar, который будет доступен на каждой странице. Я имею в виду поиск с запросом для записи и выпадающего списка с категорией элемента для поиска.ASP.NET MVC Поиск с выпадающим списком в макете страницы
Потому что я хочу, чтобы иметь-доступ на каждой странице, я реализовал его в макет страницы, как показано ниже:
<div class="col-xs-10 search-field">
@Html.Editor(" ", new {htmlAttributes = new {@class = "search-input", @id = "searchQuery", @placeholder = ResourcesPolish.Search_WhatAreYouLookingFor}})
</div>
<div class="col-xs-4 category-field">
@Html.DropDownList(" ",
new SelectList(new[]
{
new SelectListItem {Value = "1", Text = "Elektronika"},
new SelectListItem {Value = "2", Text = "Moda i uroda"},
new SelectListItem {Value = "3", Text = "Dom i zdrowie"},
new SelectListItem {Value = "4", Text = "Dziecko"},
new SelectListItem {Value = "5", Text = "Kultura i rozrywka"},
new SelectListItem {Value = "6", Text = "Elektronika"},
new SelectListItem {Value = "7", Text = "Sport i wypoczynek"},
new SelectListItem {Value = "8", Text = "Motoryzacja"},
new SelectListItem { Value = "9", Text = "Kolekcje i sztuka"},
new SelectListItem {Value = "10", Text = "Firma"},
new SelectListItem {Value = "11", Text = "Inne"},
}, "Value", "Text"), "wszystkie działy", new { @class = "category-input", @id = "category" })
</div>
<div class="col-xs-1 search-button" onclick="search()">
</div>
Тогда у меня есть JavaScript, который принимает значение, что выбрано:
function search() {
var categoryId = $('#category').val();
var query = $('#searchQuery').val();
if (query) {
window.location.href = '@Url.Action("SearchItem","Item")?query=' + query + '&categoryId=' + categoryId;
}
}
Работа прекрасна, но все категории hardcode'd и, возможно, лучшее решение - читать их с Db, потому что администратор может изменить часть из них? Но у меня нет никакого способа сделать это через страницу макета (я имею в виду передать их через модель), поэтому я не знаю, есть ли лучшее решение для таких вещей? Это та же ситуация, что и на ebay.com, всегда в верхней части страницы должна быть область поиска с раскрывающимся списком категорий. Любые идеи?
Выглядит хорошо, я попробовал, и он бросает me a StackOverFlowException в: @ Html.Action («Категории», «Макет»); - эта строка на странице LAyout –
Обратите внимание, что внутри 'Categories.cshtml' Я устанавливаю' Layout = null; '. Вы тоже это делаете? Вам нужно это сделать ... иначе это вызовет бесконечный цикл. – Alisson