Список выбора Core.NET не сбрасывается при обратной передаче при сбросе привязанного элемента - PullRequest
2 голосов
/ 19 сентября 2019

У меня есть список SELECT на странице бритвы .NET Core, который никогда не сбрасывается: -

HTML:

    <form asp-page="./TestDropdown" method="post">
        <div class="col-12">
            <strong>Gender in memory: @Model.Gender</strong>
        </div>
        <div class="row">
            <div class="col-md-12">
                 <select asp-for="@Model.Gender" asp-items="@Model.GenderList" class="form-control">
                      <option value="">Gender</option>
                 </select>
            </div>
        </div>

        <div class="row">
            <div class="col-12">
                <input asp-page-handler="Search" type="submit" value="Search" class="btn btn-default btn-block" />
                <input asp-page-handler="ClearSearch" type="submit" value="Clear Search" class="btn btn-warning btn-block" />
            </div>
        </div>
    </form>

C #:

    public class TestDropdownModel : PageModel
    {
        public TestDropdownModel()
        {
            InitSearchList();
        }

        [BindProperty]
        public string Gender { get; set; }

        [BindProperty]
        public SelectList GenderList { get; set; }

        public async Task<ActionResult> OnPostClearSearch()
        {
            Gender = "";
            InitSearchList();
            return Page();
        }

        public async Task<ActionResult> OnPostSearch()
        {
            InitSearchList();
            return Page();
        }

        private void InitSearchList()
        {
            GenderList = new SelectList(new List<string>() { "Male", "Female" })
        }

        public void OnGet()
        {

        }
    }

Ожидаемое поведение

  1. При GET пол не выбирается
  2. Когда мужчина выбран из списка SELECT и SEARCH нажимает, страница перезагружается
  3. Страница перезагружается Мужской выбран в списке.
  4. Пол метка отображается как мужчина
  5. Нажмите Очистить Поиск OnPostClearSearch() выполняется, Пол установлен на ""
  6. Метод страницы с опциями Мужской и Женский ничего не выбрано
  7. Пол в метке памяти не заполнен

Фактическое поведение

  1. В GET не выбран пол
  2. Когда мужчина выбирается из списка ВЫБРАТЬ и нажимает ПОИСК, страница перезагружается
  3. Страница перезагружается мужчина выбирается в списке.
  4. Пол метки отображается как мужчина
  5. Нажмите Очистить Поиск OnPostClearSearch() выполнено, Gender установлено на ""
  6. Перезагрузка страницыс параметрами Мужской и Женский «Мужской» выбран , хотя в 6 было установлено значение «».<option selected="selected">Male</option>
  7. Пол Метка пуста

1 Ответ

1 голос
/ 19 сентября 2019

Значение заполняется из ModelState.Добавьте ModelState.Clear(); к вашему OnPostClearSearch методу:

public async Task<ActionResult> OnPostClearSearch()
{
    Gender = "";
    ModelState.Clear();
    InitSearchList();
    return Page();
}
...