У меня есть контроллер, который имеет два метода действия, используемые страницей:
Стандартный OnGet, который вызывается при посещении страницы в браузере, и другой метод SortData, который вызывается с помощью тега привязки.
Оба эти метода взаимодействуют с одним и тем же свойством контроллера, но, похоже, существуют две разные ссылки на объекты для каждого из методов, поскольку данные внутри SortData не соответствуют дате в OnGet.
Кроме того, если я не буду инициализировать это свойство внутри конструктора контроллера, но внутри метода OnGet, оно будет нулевым внутри SortData, даже если OnGet был вызван первым.
Мой вопрос: как мне заставить SortData использовать то же свойство, которое использует OnGet?
Код выглядит так:
public class MyController : Controller
{
private MyClass Property {get; set;}
public SearchController()
{
Property = new MyClass()
}
[HttpGet("sortdata")]
public IActionResult SortData(string sortAttribute)
{
Property.SortData(sortAttribute);
return View("Index", Property);
}
public IActionResult OnGet([FromQuery]string requeststring)
{
ViewData["Message"] = requeststring;
Property.Datas = requeststring == null ?
searchService.GetAll() :
searchService.searchByRequestString(requeststring);
return View("Index", Property);
}
}
Конечно, служба, используемая в OnGet, также инициализируется в контроллере, но я удалил ее из примера, чтобы сделать ее довольно простой.
Итак, вы можете видеть, что OnGet изменяет свойство и возвращает страницу индекса. На этой странице есть якорь, который вызывает SortData, который также изменяет свойство. Но это не то же самое свойство, что и в OnGet, оно все еще находится в состоянии инициализации. Но я хочу, чтобы фактическое свойство было изменено, а затем вернуло страницу индекса с отсортированными данными.