Как RazorPages (Core3.1) использует asp для HTML ввода? - PullRequest
2 голосов
/ 22 января 2020

Почему asp - для того, чтобы не заполнять входное значение изменениями на стороне сервера при использовании asp - для во время обратной передачи?

Если я использую asp - для без явная установка атрибута input [value] мои пользовательские входные данные сохраняются, но мои изменения на стороне сервера игнорируются. И наоборот, если я явно установлю атрибут input [value], мои пользовательские входные данные будут сохранены, и любые изменения на стороне сервера будут учтены во время передачи туда и обратно.

Шаги для воспроизведения

Initial Загрузка страницы

enter image description here

Пользовательский ввод, затем нажмите «Что за?»

enter image description here

Выход из PostBack

enter image description here

Пример кода

@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";
}
...