Я хочу сделать фильтр поиска в aspnet core mvc.У меня есть модель запроса и классы привязки модели запроса, как показано ниже.
public class ListCoursesRequestModel
{
public string SearchFilter { get; set; }
}
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var model = new ListCoursesRequestModel()
{
SearchFilter = bindingContext.ActionContext.HttpContext.Request.Query["q"]
};
bindingContext.Model = model;
return Task.CompletedTask;
}
У меня есть форма поиска ниже.
<form asp-action="Index" method="get">
<div class="form-group">
<input name="q" type="text" />
<input type="submit" value="Filter" class="btn btn-sm btn-outline-secondary mb-1" />
</div>
</form>
, и это мой контроллер
public async Task<IActionResult> Index([ModelBinder(typeof(ListCoursesRequestModelBinder))]ListCoursesRequestModel request)
{
var model = await _courseService.GetListViewModelAsync(request);
return View(model);
}
В контроллере у меня есть метод GetListViewModelAsync ниже
public async Task<ListCoursesModel> GetListViewModelAsync(ListCoursesRequestModel request)
{
var query = _dbContext.Courses.AsNoTracking();
if (!string.IsNullOrWhiteSpace(request.SearchFilter))
{
query = query.Where(e =>
e.CourseTitle.Contains(request.SearchFilter) ||
e.CourseCode.Contains(request.SearchFilter) ||
e.CourseDescription.Contains(request.SearchFilter));
}
return new ListCoursesModel
{
Courses = await query.ToListAsync()
};
}
Я запрашиваю данные в GetListViewModelAsync, но когда я запускаю программу, я вижу эту ошибку
Произошло необработанное исключение, когдаобработка запроса.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
Как получить данные из моей формы в контроллер.
Спасибо ..