Почему asp - для того, чтобы не заполнять входное значение изменениями на стороне сервера при использовании asp - для во время обратной передачи?
Если я использую asp - для без явная установка атрибута input [value] мои пользовательские входные данные сохраняются, но мои изменения на стороне сервера игнорируются. И наоборот, если я явно установлю атрибут input [value], мои пользовательские входные данные будут сохранены, и любые изменения на стороне сервера будут учтены во время передачи туда и обратно.
Шаги для воспроизведения
Initial Загрузка страницы
Пользовательский ввод, затем нажмите «Что за?»
Выход из PostBack
Пример кода
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>
Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.
</p>
<div class="row">
<div class="col-6 mx-auto">
<form method="post">
<div asp-validation-summary="All"></div>
<div class="form-group">
<input class="form-control" asp-for="NameWithoutValue" />
</div>
<div class="form-group">
<input class="form-control" asp-for="NameWithValue" value="@Model.NameWithValue" />
</div>
<button class="btn btn-primary" asp-page-handler="WhatThe">What the?</button>
</form>
</div>
</div>
</div>
public class IndexModel : PageModel
{
public void OnGet()
{
}
public void OnPostWhatThe()
{
NameWithoutValue = DateTime.Now.ToString("HH:mm:ss");
NameWithValue = DateTime.Now.ToString("HH:mm:ss");
}
[BindProperty]
public string NameWithoutValue { get; set; } = "without-value-attribute";
[BindProperty]
public string NameWithValue { get; set; } = "with-value-attribute";
}