Я пытаюсь создать запрос LINQ, который возвращает либо все результаты, либо отфильтрованный результат, либо список результатов на основе нескольких полей ввода. Однако в настоящее время я не могу получить значение из 2-го поля ввода, где я пытаюсь ввести номер социального страхования и использовать его в качестве параметра фильтрации. Каждый раз, когда я пытаюсь запустить фильтр, мне показывают, что ssnString является нулем.
Контроллер "Получить" Метод:
public async Task<IActionResult> Index(string sortOrder, string searchString, string ssnString)
{
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
ViewData["nameFilter"] = searchString;
ViewData["ssnFilter"] = ssnString;
var members = from m in _context.Member
select m;
if (!String.IsNullOrEmpty(searchString))
{
members = members.Where(s => s.LastName.Contains(searchString));
}
if (!String.IsNullOrEmpty(ssnString))
{
members = members.Where(s => s.SSN.Equals(ssnString));
}
Индекс:
<form asp-action="Index" method="get">
<div class="form-actions no-color">
<p>
Filter by last name: <input type="text" name="SearchString" value="@ViewData["nameFilter"]" /> |
@*<input type="submit" value="Search" class="btn btn-info" /> |*@
Find by SSN: <input type="number" name="SSNSearchString" value="@ViewData["ssnFilter"]" />
<input type="submit" value="Search" class="btn btn-info" /> |
<a asp-action="Index">Back To Full Index</a>
</p>
</div>
</form>
Я бы хотел, чтобы все результаты были возвращены, если ни одному из полей ввода не присвоено значение, и если поле имени или ssn-фильтра задано, то оно используется в качестве строки фильтрации. Как уже упоминалось, в настоящее время я не вижу значения для ssnFilter, передаваемого в контроллер и в запрос, но nameFilter, кажется, работает отлично.
Спасибо за вашу помощь!