Я пытаюсь реализовать свое первое решение, используя Razor Pages и ViewComponents в ASP.NET MVC Core 2, и у меня возникла проблема.
В частности, у меня есть список элементов, отображаемых на RazorPage.У каждого элемента в списке есть кнопка.Когда эта кнопка нажата, я хочу передать 2 параметра в ViewComponent (который является модалом начальной загрузки) и отобразить модальное.Проблема в том, что я не могу получить данные для отображения.
В частности, я бы хотел вызывать ViewComponent только после нажатия кнопки, а не при отображении родительской страницы.Я не думаю, что у меня есть «поток» правильно.В любом случае, вот что у меня есть:
Родительская страница бритвы со списком элементов и вызовом ViewComponent:
@foreach (var item in Model.SearchResults)
{
items
}
@await Component.InvokeAsync("Location")
Jquery $ .get вызов контроллера, передавая параметры контроллерудля генерации модальных данных:
thisdata = $(this).attr('data-author');
searchString = $(location).attr('href').split("=")[1];
$.get("/Search/GetLocations", { "author": thisdata, "searchString": searchString })
.done(function (data, textStatus, jqXHR) {
})
.fail(function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR);
});
Действие контроллера, которое генерирует данные для модальных:
public ViewComponentResult GetLocations(string author, string searchString)
{
var model = _tclRepository.GetLocations(author, searchString);
return ViewComponent("Location", model);
}
ViewComponent:
public IViewComponentResult Invoke(IEnumerable<LocationViewModel> model)
{
if (model == null)
{
var x = Enumerable.Empty<Data.ViewModels.LocationViewModel>().ToList();
return View(x);
}
else
{
return View(model);
}
}
Часть default.cshtmlкоторый является бутстрап 4 модальный:
<div class="modal-body">
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">Copy #</th>
<th scope="col">Branch</th>
<th scope="col">Status</th>
<th scope="col">Date Due</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<th scope="row">1</th>
<td>@item.Branch</td>
<td>@item.Status</td>
<td>@item.DueDate</td>
</tr>
}
</tbody>
</table>
</div>
Любая помощь очень ценится,
Спасибо,
Пит