【发布时间】:2019-08-21 06:08:35
【问题描述】:
我正在开发的第一个 Razor-pages 应用程序,所以我有点困惑。
当调用 OnGet() 函数时,会调用 SpotifyAPI 来获取当前用户的播放列表并将它们分配给一个变量。然后需要根据 OnPost() 调用时 UI 上的选定值检查此变量。
问题是,当调用 OnPost() 时,PlaylistsToLook 变量现在为空。
有没有办法保留两次调用之间的值?
这是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>
【问题讨论】:
标签: c# .net razor-pages