ASP.NET Core 3.0 Razor Pages Выберите помощник, не публикуя значение - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь опубликовать выбранное значение из выпадающего меню на странице страниц бритвы ASP.NET Core 3.0.Я возвращаю значение по умолчанию каждый раз.Я не вижу, что мне не хватает.

Вот код:

Страница:

<select asp-for="SelectedReportId" class="form-control" name="ReportSelect"
   asp-items="@(new SelectList(Model.Reports, nameof(ReportsModel.Id), nameof(ReportsModel.ReportName)))">
</select>

Кодовый код:

[BindProperty]
public int SelectedReportId { get; set; }

Это выглядит так в форме:

<select class="form-control" name="ReportSelect" data-val="true" data-val-required="The SelectedReportId field is required." id="SelectedReportId">
   <option value="1">All People</option>
   <option value="2">People Starting With T</option>
</select>

Когда я публикую значения, остальная часть формы проходит, но ничего не получается для SelectedReportId.Я попытался изменить тип на строку, в случае, если это было проблемой, но затем он просто принимает значение NULL вместо 0. Я также проверил, что список загружался правильно (конечно, вы можете видеть, что он загружается при корректной работе HTML-кода).рендеринг).

Я пробовал все конфигурации, которые могли придумать, но безуспешно.Я даже клонировал проект на другую машину, просто чтобы протестировать его, но получил те же результаты.

Я использую Visual Studio 2019 16.4.0 Preview 1.0, и проект представляет собой .NET Core 3.0проект.

1 Ответ

2 голосов
/ 27 сентября 2019

Вы используете ReportSelect имя для раскрывающегося списка, когда пытаетесь связать его с SelectedReportId без указания явного связывания.Просто замените свое раскрывающееся имя на ReportSelect на SelectedReportId, и оно решит вашу проблему.

<select asp-for="SelectedReportId" class="form-control" name="SelectedReportId"
        asp-items="@(new SelectList(Model.Reports, nameof(ReportsModel.Id),nameof(ReportsModel.ReportName)))">
</select>

Или, если вы не хотите менять раскрывающееся имя, вам нужно указатьимя свойства в вашем BindProperty атрибуте.

[BindProperty(Name="ReportSelect")]
public int SelectedReportId { get; set; }

Надеемся, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...