私はWeb開発が初めてで、リクエスト間でデータを永続化する方法についてはわかりません。GetとPostのエラー検証の間にASP.NETコアの永続的な値があります
象のタイトルはtitleIdクエリパラメータに応じて、GETリクエストのAPIからフェッチされている:
これは、これまでのところ、私のサイトです。ログインを押すと、電子メールとパスワードが入力されているなど、モデルの検証が実行されています。ただし、エラーページが返された場合、その値は保持されていないため、象のテキストは空です。 POSTエラーが返されたときにその値が保持されるようにするにはどうすればよいでしょうか?それはPOSTデータに含まれなければなりませんか?私はAPIを再度要求したくありません。背後
コード:
public class IndexModel : PageModel
{
private string apiTitle;
public string ApiTitle { get { return apiTitle; } set { apiTitle = value; } }
// Bind form values
[BindProperty]
public User user { get; set; }
public Task<IActionResult> OnGetAsync(string titleId)
{
if (!string.IsNullOrEmpty(titleId))
{
ApiTitle = await GetTitleFromApiAsync(titleId);
}
return Page();
}
public async Task<IActionResult> OnPostLoginAsync()
{
if (!IsLoginFormValid())
{
// When this is returned, for example if no password was entered,
// elephant title goes missing since apiTitle is null?
return Page();
}
var user = await LoginEmailAsync();
return RedirectToPage("/Profile");
}
}
HTML:
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<link rel="stylesheet" href="css/index.css">
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<div class="login-page">
<span id="label_api_title">@Model.ApiTitle</span>
<div class="form">
<form class="login-form" method="post" asp-page-handler="Login">
<input type="text" placeholder="Email" asp-for="User.Email"/>
<span asp-validation-for="User.Email" class="text-danger"></span>
<input type="password" placeholder="Password" asp-for="User.Password1" />
<span asp-validation-for="User.Password1" class="text-danger"></span>
<button>login</button>
<p class="message">Not registered? <a href="#">Create an account</a></p>
</form>
</div>
</div>
<script src="js/index.js"></script>
ありがとう、これは私がそれについて私の頭をまっすぐにしたときに終わったものです。 –