У меня есть простое действие поиска в Controller A. Я знаю, что оно не самое эффективное, но, похоже, оно работает.
[HttpPost, ActionName("Search")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Search(string cellnumberFragment, string clientFragment, string serviceFragment, string deviceFragment, string networkFragment, string serialFragment)
{
var thirdPartySims = _context.ThirdPartySim.AsQueryable();
if (!string.IsNullOrWhiteSpace(cellnumberFragment)) thirdPartySims = thirdPartySims.Where(s => s.Cellnumber.Contains(cellnumberFragment));
if (!string.IsNullOrWhiteSpace(clientFragment)) thirdPartySims = thirdPartySims.Where(s => s.Client.Name.Contains(clientFragment));
if (!string.IsNullOrWhiteSpace(serviceFragment)) thirdPartySims = thirdPartySims.Where(s => s.Service.Name.Contains(serviceFragment));
if (!string.IsNullOrWhiteSpace(deviceFragment)) thirdPartySims = thirdPartySims.Where(s => s.DeviceName.Contains(deviceFragment));
if (!string.IsNullOrWhiteSpace(networkFragment)) thirdPartySims = thirdPartySims.Where(s => s.Network.Name.Contains(networkFragment));
if (!string.IsNullOrWhiteSpace(serialFragment)) thirdPartySims = thirdPartySims.Where(s => s.Serial.Contains(serialFragment));
return View(await thirdPartySims.ToListAsync());
}
В View for Controller B я хочу иметь ссылку наКонтроллер поиска, передавая указанные значения в Поиск за кулисами.Словарь позволяет мне четко указать каждый параметр действия.Затем он добавляется с помощью тега helper asp-all-route-data
@{
var parms = new Dictionary<string, string>
{
{"cellnumberFragment", null },
{"clientFragment", Model.Name },
{"serviceFragment", null },
{"deviceFragment", null },
{"networkFragment", null },
{"serialFragment", null }
};
}
<a asp-controller="ThirdPartySims" asp-action="Search" asp-all-route-data="parms">List all SIM's for client</a>
Это создает ссылку типа
http://localhost:52827/ThirdPartySims/Search?clientFragment=Not%20Specified
Когда я обычно загружаю Поиск через представление Index, он работает нормально.При запуске таким способом по ссылке, использующей обработчики тегов, я получаю
This page isn’t working If the problem continues, contact the site owner.
HTTP ERROR 405
И мой журнал vs2019 говорит:
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information:
Request starting HTTP/1.1 GET
http://localhost:52827/ThirdPartySims/Search
Microsoft.AspNetCore.Routing.EndpointMiddleware:Information:
Executing endpoint '405 HTTP Method Not Supported'
Microsoft.AspNetCore.Routing.EndpointMiddleware:Information:
Executed endpoint '405 HTTP Method Not Supported'
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information:
Request finished in 6.3539ms 405