Первое приложение Razor-страниц, которое я разрабатываю, так что я немного запутался.
Когда вызывается функция OnGet (), вызывается SpotifyAPI, чтобы получить списки воспроизведения для текущего пользователя иназначить их переменной.Затем эту переменную необходимо проверить по выбранным значениям в пользовательском интерфейсе при вызове OnPost ().
Проблема в том, что при вызове OnPost () переменная PlaylistsToLook теперь равна нулю.
IsЕсть ли способ сохранить значение между двумя вызовами?
Это cshtml.cs
public class CreateModel : PageModel
{
private readonly Models.AppDbContext _context;
public CreateModel(Models.AppDbContext context)
{
_context = context;
}
public void OnGet()
{
PlaylistsToLook = PlaylistRequestService.GetUserPlaylists(_context);
}
public void OnPost(string[] playlistsToLook)
{
foreach (var playlistId in playlistsToLook)
{
PlaylistRequest.PlaylistsToLook.Add(PlaylistsToLook.First(x => x.id.Equals(playlistId)));
}
_context.PlaylistRequests.Add(PlaylistRequest);
PlaylistRequestService.ProcessPlaylistRequest(PlaylistRequest, _context);
}
[BindProperty]
public List<SpotifyPlaylist> PlaylistsToLook { get ; set; }
[BindProperty]
public Models.PlaylistRequest PlaylistRequest { get; set; }
}
Это cshtml
@page
@model SpotifyPlaylistCurator.Pages.PlaylistRequest.CreateModel
@{
ViewData["Title"] = "CreatePlaylist";
}
<h2>Create a Playlist</h2>
<form method="POST">
<div class="form-group">
<label asp-for="PlaylistRequest.Name" class="control-label"></label>
<input asp-for="PlaylistRequest.Name" class="form-control" />
</div>
<div class="form-group">
<label asp-for="PlaylistRequest.Duration" class="control-label"></label>
<input asp-for="PlaylistRequest.Duration" class="form-control" />
</div>
<div class="form-group">
<label asp-for="PlaylistRequest.PlaylistsToLook" class="control-label"></label>
@{
int cnt = 0;
foreach (var playlist in Model.PlaylistsToLook)
{
if (cnt++ % 3 == 0)
{
@:</tr><tr>
}
@:<td>
<input type="checkbox"
name="playlistsToLook"
value="@playlist.id" />
@playlist.name
@:</td>
}
}
</div>
<div></div>
<input type="submit" name="Create a Playlist" />
</form>