Отправка одно значение Контроллер
Я буквально только что создавая «поиск» вариант/фильтра в моей форме; Используя что-то вроде:
Просмотр
@using (Html.BeginForm())
{
<div>
<hr />
Search
<hr />
Name: @Html.TextBox("SearchString", null, new { @id = "thisID" })<a style="float:right; margin-top:8px" href="@Url.Action("Index", "ControllerName")">
<br />
<input type="submit" value="Filter" id="subBtn" />
<hr />
</div>
}
С моим кодом контроллер Бытии:
[Authorize]
public ActionResult Index()
{
return View(db.Traders.ToList());
}
[HttpPost]
public ActionResult Index(string searchString)
{
var traders = from m in db.Traders //db is my Database Entities
select m;
if (!String.IsNullOrEmpty(searchString))
{
traders = traders.Where(s => s.Name.Contains(searchString));
}
return View(traders);
}
И поэтому мой контроллер получит это значение TextBox как часть метода.
Фильтрация Использование поиска и/или Combo коробки (оба или один или ни одного)
я использовал this site для реализации базовой системы поиска/фильтрации для моего проекта. Это помогло ТАК МНОГО.
Он использует ViewBag
, чтобы вы могли создать comboBox, который затем вы можете выбрать и вернуть выбранное значение вашему методу действия [HttpPost] - отлично подходит для ваших нужд фильтрации/поиска!
Это означает, что вместо того, чтобы отправить полную модель обратно на ваш контроллер, вы вместо этого переходите к «поисковому термину», который затем можете использовать в методе контроллера, и легко получить соответствующие модели в своем методе (аналогично отправке одно значение, как в первом примере).
Ваш метод действия может выглядеть следующим:
public ActionResult Index(string movieGenre, string searchString)
{
var GenreLst = new List<string>();
var GenreQry = from d in db.Movies
orderby d.Genre
select d.Genre;
GenreLst.AddRange(GenreQry.Distinct());
ViewBag.movieGenre = new SelectList(GenreLst);
var movies = from m in db.Movies
select m;
if (!String.IsNullOrEmpty(searchString))
{
movies = movies.Where(s => s.Title.Contains(searchString));
}
if (!string.IsNullOrEmpty(movieGenre))
{
movies = movies.Where(x => x.Genre == movieGenre);
}
return View(movies); //returns movies matching results
}
Отправка полной модели к контроллеру
В плане помощи прохождения полный контроллер, вы можете найти this tutorial полезно, поскольку он создает основные действия CRUD («Создать» позволяет вам передать одну модель контроллеру).
В методе действий «Postback», вам нужно будет «связывать» эти данные, как:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "LastName, FirstMidName, EnrollmentDate")]Student student)
{
//do stuff with this model
return redirectToAction("Index");
}
Это дополнительно описано в приведенной выше ссылке.
Ах, я так боялся. Я просто надеялся, что это будет более простой выход :) Я попробую его через некоторое время, а затем примите этот ответ, если он будет работать! Благодаря! –
Да, это работает, и я буду использовать это сейчас. Я, скорее всего, изменю это на более эффективный способ как можно скорее, но для этого мне просто нужно быстро исправить! Спасибо за помощь! –