Как вернуть список элементов модели в ASP.NET Core SelectListItem? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть модель, определенная как:

public class MessageModel
{
    private Dictionary<string, MessageAttributeValue> messageAttributes;

    /// <summary>
    /// This model class is used to store the contents of the SQS Message Responses for the ListAllTemplates command.
    /// It does not map into a physical database table, rather stored in memory for use by the DashboardController.
    /// </summary>
    public MessageModel() { }

    public MessageModel(string messageId, string body, Dictionary<string, MessageAttributeValue> messageAttributes, string receiptHandle)
    {
        MessageId = messageId;
        Body = body;
        this.messageAttributes = messageAttributes;
        ReceiptHandle = receiptHandle;
    }

    public string Message { get; set; }
    public string MessageId { get; set; }
    public string MessageHandler { get; set; }
    public string Body { get; set; }
    public string ReceiptHandle { get; set; }

    public List<SelectListItem> Messages { get; } = new List<SelectListItem>();
}

Она используется для хранения ответов на сообщения SQS и на нее ссылаются в моем контроллере следующим образом:

 public async Task<IActionResult> Index()
    {
        var models = new List<MessageModel>();
        await ListTemplatesAsync();
        await StartEnvironmentAsync();
        return View(models);
    }
 private async Task ListTemplatesAsync()
    {
        var response = await GetEnvironments.OnMessageReceiptAsync();
        var models = new List<MessageModel>();
        foreach (var msg in response)
        {
            models.Add(new MessageModel(msg.MessageId, msg.Body, msg.MessageAttributes, msg.ReceiptHandle));
        }
    }

Я хочу вернутьсписок MessageIds из MessageModel, который содержит ответы SQS.

Моя разметка вида выглядит следующим образом:

@model IEnumerable<MySite.Models.MessageModel>;
    }
    <form id="frmEnvironment" asp-controller="Dashboard" method="get">
          <select id="selTemplates" asp-items="Messages"></select>
          <button id="btnStart" role="button" class="btn btn-primary" type="button" title="Start"></button><br />
          <button id="btnStop" class="btn btn-primary" type="button" title="Stop"></button><br />
          <button id="btnTest" class="btn btn-primary" title="Test" type="button"></button><br />
   </form>

Как мне гарантировать, что список элементов MessageModel будет возвращен в выпадающем списке выбора?

1 Ответ

0 голосов
/ 11 декабря 2018

Вы должны заполнить свою модель, я думаю, что вы возвращаете пустую модель

public async Task<IActionResult> Index()
{
        List<MessageModel> models =await ListTemplatesAsync();
        await StartEnvironmentAsync();
        return View(models);
}
private async Task<List<MessageModel>> ListTemplatesAsync(List<MessageModel> models)
{
    var response = await GetEnvironments.OnMessageReceiptAsync();
    List<MessageModel> models = new List<MessageModel>();
    foreach (var msg in response)
    {
        models.Add(new MessageModel(msg.MessageId, msg.Body, msg.MessageAttributes, msg.ReceiptHandle));
    }
    return models ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...