@CallMeYourDaddy

Как перебирать коллекцию и присваивать значения переменной?

Мне необходимо сделать веб-шелл. Я почти все сделал, осталось только следующее: Запоминать историю введенных команд в базе данных на сервере, восстанавливать историю введенных при входе на страницу, листать историю клавишами “вверх” и “вниз” (как, например, в bash или PowerShell).
У меня есть бд, куда уже добавляются команды, которые я ввел в поле, но не получается реализовать просмотр команд с помощью клавиш.

У меня есть html код:
<div class="input-group mb-3">
        <input type="text" class="form-control" placeholder="Bash command" aria-label="Bash command"
               aria-describedby="basic-addon2" <b>@bind="_bashCommand"</b> <b>@onkeydown="OnKeyDown"</b>>
        <div class="input-group-append">
            <button class="btn btn-outline-secondary" @onclick="Method" type="button">Send</button>
        </div>
    </div>


Вот так я получаю все команды, которые есть в бд:
private IEnumerable<BashData> _allCommands = new List<BashData>();
private void GetAllBashCommands()
{
     _allCommands = repository.GetAllCommands();
}


А вот метод обработки нажатия на кнопки:
private void OnKeyDown(KeyboardEventArgs args)
    {
        switch (args.Key)
        {
            case "ArrowUp":
                _bashCommand = ;
                break;
            case "ArrowDown":
                _bashCommand = ;
                break;
        }
    }


Т.е я нажимаю на кнопку и _bashCommand присваивается элемент коллекции _allCommands
Как это сделать?
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
@cicatrix
было бы большой ошибкой думать
На стороне клиента вам необходимо после нажатия клавиш инициировать Ajax запрос на сервер, потом ловить от сервера ответ, какую команду поставить в поле.
Но каждый раз на сервер таскаться за командами как-то криво. Я бы передавал 10 последних команд вместе со страницей, а на сервер лез только если надо в более раннюю историю залезть.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы