Если кто-то может мне помочь?
Я пытаюсь разместить окно поиска в заголовке моего приложения и хочу, чтобы пользователь, независимо от того, что он / она делает в приложении, имел возможностьпросто введите условие поиска в поле поиска заголовка и поиска результатов.Идея заключается в том, что всякий раз, когда пользователь выполняет поиск в строке поиска заголовка, я хочу отобразить представление с 2 частичными результатами и фильтрами для результатов.
До сих пор у меня было меню - Поиск, и при нажатии я загружал ПоискИндекс Действие с окном поиска.Когда пользователь что-то ищет, я отображал результаты и фильтры для результатов с частичными представлениями, добавляя результаты в div id = "Results" и div id = "Filters", используя javascript.
Как я могу сделать это правильно ???
Заранее спасибо ...
Вот мой код контроллера поиска:
public ActionResult Index(string number)
{
return View(model: number);
}
[SearchThrottle]
[HttpPost]
public ActionResult SearchByNumber(SearchArticleByNumberModel model, PagingInfo pagingInfo)
{
var results = repository.SearchArticleByNumber(model, pagingInfo);
return PartialView("Articles", results);
}
[HttpPost]
public ActionResult SearchByNumberFilters(SearchArticleByNumberModel model)
{
var results = repository.LoadArticleFilters(model);
return PartialView("ArticleFilters", results);
}
Вот мой индексный просмотр:
<div class="row">
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
Search
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<form id="searchbynumberform">
Value:
<div class="input-group input-group-sm">
<input type="text" class="form-control" name="number" id="number" value="@Model">
<input type="radio" name="articlekind" id="arl_kind0" value="0" checked>
<span class="input-group-btn">
<button class="btn btn-primary" type="button" name="numbersearch" id="numbersearch" disabled>
Search
</button>
</span>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="col-md-8">
<div id="alerts"></div>
<form id="resultsForm">
<div id="Filters"></div>
<div id="Results"></div>
</form>
</div>
</div>
Это мой файл JavaScript:
var searchByNumber = {
init: function () {
$(document).on('click', "#numbersearch", function () {
searchShared.searchurl = "/Search/SearchByNumber";
searchShared.filtersurl = "/Search/SearchByNumberFilters";
searchShared.postdata = $("#searchbynumberform").serialize();
searchShared.loadFilters();
searchShared.loadArticles();
});
$(document).on('keydown', "#number", function (event) {
var key = event.keyCode || event.charCode;
if (key == 13) {
$("#numbersearch").click();
event.preventDefault();
}
});
$(document).on('input', "#number", function () {
var num = $("#number").val();
$("#numbersearch").prop("disabled", num.length <= 3);
});
$(document).on("change", "#cbsimilarsearch", function () {
var checked = $("#cbsimilarsearch").attr('checked') != undefined;
$("#similarsearch").val(checked);
});
if (!!$("#number").val()) {
$("#numbersearch").click();
}
}
};
loadArticles: function () {
var url = "/Search/Articles";
var postdata = searchShared.postdata;
if ($("#resultsForm").length) {
postdata += "&" + $("#resultsForm").serialize();
}
$.post(searchShared.searchurl,
postdata,
function (data) {
$("#Results").html(data);
$('.panel.available:last').after("<hr />");
})
.fail(function (result) {
if (result && result.status && result.status === 429) {
message.error(result.responseText);
} else {
$("#Results").html('');
message.error("Error... Try Again...");
}
});
},
loadFilters: function () {
var url = "/Search/ArticleFilters";
var postdata = $("#searchbyvehicleform").serialize();
$("#Filters").html('');
$.post(searchShared.filtersurl,
searchShared.postdata,
function (data) {
$("#Filters").html(data);
});
}