C# 如何将模型项列表返回到ASP.NET Core SelectListItem?
我的模型定义为:C# 如何将模型项列表返回到ASP.NET Core SelectListItem?,c#,asp.net-core,C#,Asp.net Core,我的模型定义为: 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
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));
}
}
@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>
我想从保存SQS响应的MessageModel返回MessageID列表
我的视图标记如下所示:
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));
}
}
@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项列表 您应该填写您的模型,我认为您返回的模型是空的
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 ;
}
我不太确定我是否理解您想要做的事情,但有两件事我觉得不对:在标记帮助程序中,您应该使用Model.Messages而不是Messages。我也不理解ListTemplatesAsync方法的意图。您填写一个本地列表,该列表在您离开该方法后消失。