Простейший пример для установки asp -элементов без получения «имя не существует в текущем контексте» - PullRequest
0 голосов
/ 17 января 2020

Я человек, который занимался простым веб-программированием в прошлом, но сейчас, когда я возвращаюсь к нему и пытаюсь создать простое одностраничное приложение с формой, в которой есть «выбор», я невозможно выйти за пределы ошибки « Имя не существует в текущем контексте » в моем файле cs html. Я решил создать веб-приложение. NET Core Razor (не MVC) с Visual Studio. Все, что я кодировал, находится в двух файлах: Index.cs html и Index.cs html .cs, и я стараюсь сделать его максимально простым и не реализовывать какие-либо контроллеры или использовать лямбда-синтаксис - на самом деле все, что не ' Это очень просто или чертовски просто - потому что моему приложению это не нужно, и я пытаюсь ограничить, сколько новых технологий мне нужно, чтобы сделать это простое приложение готовым. Я думаю, что понимаю привязку модели, потому что я заставил ее работать для меня в этих двух файлах, когда «выбор» не был определен. Я смог связать такие вещи, как machineSN, который вы видите ниже. Я пытаюсь связать список строк, которые есть в моем файле Index.cs html .cs, с оператором "select" в моем файле Index.cs html.

в Index.cs html .cs ...

[BindProperties]
public class IndexModel : PageModel
{

public string machineSN = "123456789";
public string machineModel;
public List<SelectListItem> machineModels = new List<SelectListItem>
{
    new SelectListItem {Text="Unknown", Value="0"},
    new SelectListItem {Text="Omega", Value="1"),
}
:
:

в Index.cs html ...

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}
<div class="text-left">
    <form enctype="multipart/form-data" method="post">
        Machine S/N: <input type="text" name="machineSN" asp-for="machineSN" />
        Model: <select name="machineModel" asp-for="machineModel" asp-items="machineModels"></select>
    </form>
</div>

Я получаю сообщение об ошибке при наведении курсора на волнистую красную линию, что Visual Studio накладывает на строку asp -items в cs html.

Я пытался дать другие типы элементов asp -items - такие как SelectList и IEnumerable, но я все еще получаю сообщение об ошибке. Я предпочел бы видеть ответ только с участием SelectListItems, если это возможно. Я видел посты, где люди заполняют «списки», которые они дают asp -элементов из баз данных и OnGet (), но можете ли вы показать мне, как это сделать в простом случае, который я изложил выше? Большое спасибо за любой совет, который приводит меня к простому решению. Я тратил много времени, пытаясь выяснить это сообщение об ошибке.

Rich

1 Ответ

0 голосов
/ 17 января 2020

Кажется, вы забыли поставить Model.. Вы можете увидеть пример того, как использовать помощник тега select в asp. net документах .

Так что, в вашем случае, вам нужно обновить свой выбор до :

<select asp-for="machineModel" asp-items="Model.machineModels"></select>

...