У меня есть просмотр списка. когда элемент нажал, он откроет страницу сведений. Но из-за проблем с производительностью в restAPI я настроил его только на отправку данных, необходимых в listView. Вот почему я хочу получить новый запрос к идентификатору, основанному на API, который я получил по нажатию на просмотр списка.
listview.xaml.cs:
private async void OnItemSelected(object sender, ItemTappedEventArgs e)
{
var itemDetail = e.Item as Data.Models.ModelAttendance.Attendance;
await Navigation.PushAsync(new ListDetailAttendPage
(
itemDetail.Id, itemDetail.Image, itemDetail.Created, itemDetail.AddressDetail,
itemDetail.Note, itemDetail.Activity
));
}
listViewDetail.xaml.cs
private ObservableCollection<Data.Models.ModelAttendance.Attendance> _attendances;
public ListDetailAttendPage (long id, byte[] image, DateTime created, string addressDetail, string note, string activity)
{
InitializeComponent ();
long idItem = id;
ImgSelfie.Source = ImageSource.FromStream(() => new MemoryStream(image));
EntTime.Text = created.ToString();
EdtLocation.Text = addressDetail;
EntNote.Text = note;
LblAction.Text = activity;
}
protected override void OnAppearing()
{
_attendances = new ObservableCollection<Data.Models.ModelAttendance.Attendance>();
base.OnAppearing();
}
код API, который я использую на странице просмотра списка:
[HttpGet]
public IActionResult GetM_ATTENDANCE()
{
var data = _context.M_ATTENDANCE.Select(f => new Attendance
{
Id = f.Id,
Name = f.Name,
Activity = f.Activity,
Created = f.Created
}).OrderByDescending(x => x.Id).ToList();
var tempJson = new
{
Data = data,
Size = data.Count
};
return Json(tempJson);
}
Как я могу сделать это в xamarin.form? Я искал, но нет правильного решения. Это то, что я пробовал, но я все еще не могу получить требуемые данные:
private ObservableCollection<Data.Models.ModelAttendance.Attendance> _attendances;
HttpClient client = new HttpClient();
public ListDetailAttendPage (long id, byte[] image, DateTime created, string addressDetail, string note, string activity)
{
InitializeComponent ();
long idItem = id;
ImgSelfie.Source = ImageSource.FromStream(() => new MemoryStream(image));
EntTime.Text = created.ToString();
EdtLocation.Text = addressDetail;
EntNote.Text = note;
LblAction.Text = activity;
Task.Run(async () =>
{
await GetItem(idItem);
});
}
async Task GetItem(long id)
{
HttpResponseMessage message = await client.GetAsync(string.Format("http://[url]:[port]/api/attendances/" + id));
string jsonString = await message.Content.ReadAsStringAsync();
//what should I do next to get the data here?
}
protected override void OnAppearing()
{
_attendances = new ObservableCollection<Data.Models.ModelAttendance.Attendance>();
base.OnAppearing();
}
У меня уже есть API отдыха для получения ответа на основе идентификатора, но я не знаю, использовать ли его в Xamarin:
// GET: api/Attendances/5
[HttpGet("{id}")]
public async Task<IActionResult> GetAttendance(long id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var attendance = await _context.M_ATTENDANCE.FindAsync(id);
if (attendance == null)
{
return NotFound();
}
return Ok(attendance);
}
Я только начал изучать ксамарин, пожалуйста, спросите меня, если мой вопрос все еще не ясен
Ваша помощь очень ценится ^ _ ^