У меня есть форма, где пользователи могут вводить информацию для поиска записей. У меня есть ViewModel, созданная для передачи пользовательских входов в контроллер.
Вот ViewModel
public class SearchParameters
{
[DisplayName("First Name: ")]
public string FirstName { get; set; }
[DisplayName("Last Name: ")]
public string LastName { get; set; }
[DisplayName("Alternate Name: ")]
public string AltName { get; set; }
[DataType(DataType.Date)]
[DisplayName("Date of Record: ")]
public DateTime? DateOfRecord { get; set; }
[DisplayName("County: ")]
public string County { get; set; }
}
Это форма для получения пользовательских данных
@model GenDB.ViewModels.SearchParameters
@using (Html.BeginForm("Search", "Home"))
{
@Html.LabelFor(m => m.FirstName)
@Html.TextBoxFor(m => m.FirstName)
<br />
<br />
@Html.LabelFor(m => m.LastName)
@Html.TextBoxFor(m => m.LastName)
<br />
<br />
@Html.LabelFor(m => m.AltName)
@Html.TextBoxFor(m => m.AltName)
<br />
<br />
@Html.LabelFor(m => m.DateOfRecord)
@Html.TextBoxFor(m => m.DateOfRecord)
<br />
<br />
@Html.LabelFor(m => m.County)
@Html.TextBoxFor(m => m.County)
<br />
<br />
<button type="reset">Clear All Fields</button>
<button type="submit">Search</button>
}
Это вызовет метод поиска с домашнего контроллера. Мой метод поиска ниже.
public ActionResult Search(SearchParameters searchParam)
{
var business = new ObituaryBuisnessLogic();
var model = business.Search(searchParam);
return View(model.ToList());
}
Мой класс бизнес-уровня с фактической реализацией ниже.
public class ObituaryBuisnessLogic
{
private GenContext Context;
public ObituaryBuisnessLogic()
{
Context = new GenContext();
}
public IEnumerable<Obit> Search(SearchParameters parameters)
{
var result = Context.Obit.AsQueryable();
if (parameters != null)
{
if (!string.IsNullOrEmpty(parameters.FirstName))
{
result = result.Where(x => x.FirstName.Contains(parameters.FirstName));
}
if (!string.IsNullOrEmpty(parameters.LastName))
{
result = result.Where(x => x.LastName.Contains(parameters.LastName));
}
if (!string.IsNullOrEmpty(parameters.AltName))
{
result = result.Where(x => x.AltName.Contains(parameters.LastName));
}
}
return result;
}
}
Моя цель - взять пользовательские входные данные из первой формы, поместить их в модель параметров поиска, затем я хочу запросить 3 отдельные таблицы, все со схожими, но разными структурами и моделями, и вернуть все результаты в представление. , с 3 частичными представлениями для соответствующих таблиц.
Моя путаница наступает, потому что я знаю, что мне нужно вызывать метод Search из контроллера Home, но как мне в таком случае разбивать контроллер таблиц друг на друга, чтобы запрашивать базу данных и возвращать результаты.
Мой мыслительный процесс такой.
ПАРАМЕТРЫ ВХОДА ПОЛЬЗОВАТЕЛЯ ----> СПОСОБ ПОИСКА ДОМАШНЕГО КОНТРОЛЛЕРА ВЫЗЫВАЕТСЯ ВХОДАМИ ПОЛЬЗОВАТЕЛЯ, ПЕРЕДАННЫМИ В ПАРАМАХ -----> (вот мое замешательство) ВЫЗЫВАЙТЕ ТРИ РАЗЛИЧНЫХ ИНДИВИДУАЛЬНЫХ КОНТРОЛЛЕРА «ПОИСК» МЕТОДОВ, ПОПУЛЯРНЫЙ МОДУЛЬ ИХ С РЕЗУЛЬТАТАМИ, ВОЗВРАТИТЕ РЕЗУЛЬТАТЫ К УЗНАЧИТЕЛЬНЫМ ВИДАМ ??? ....
Я думал о том, чтобы просто поместить всю логику в метод поиска Home Controller, но потом меня смущает, почему мне даже нужны контроллеры для трех других классов Model.
Спасибо, что уделили время на мой вопрос.