C# 下拉列表中选择的值未传递给控制器
我随后从一个方法调用填充了一个多选下拉列表,但是我选择的值没有被传递到控制器C# 下拉列表中选择的值未传递给控制器,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我随后从一个方法调用填充了一个多选下拉列表,但是我选择的值没有被传递到控制器 <form asp-controller="ApiController" asp-action="Usage"> <label asp-for="Api"></label> <div> <select id="api" class="form-control" asp-for="Api" asp-items="@Model.Api"> <
<form asp-controller="ApiController" asp-action="Usage">
<label asp-for="Api"></label>
<div>
<select id="api" class="form-control" asp-for="Api" asp-items="@Model.Api">
</select>
</div>
</form>
此下拉列表中的选项包含所有API
型号
public class Model
{
public List<SelectListItem> Api { get; set; }
}
公共类模型
{
公共列表Api{get;set;}
}
当我查看action方法时,模型有一个Api的
Null
值。asp for标记包含所选项,它不应该与asp items
中的集合集相同。
因此,在模型上添加一个新属性,该属性与API的SelectListItems的值类型集相匹配(在本例中使用int),如下所示
public class Model
{
public int selectedApi { get; set; }
public List<SelectListItem> Api { get; set; }
}
公共类模型
{
public int selectedApi{get;set;}
公共列表Api{get;set;}
}
并在所选项目的“选择”标记上使用它
<select id="api" class="form-control" asp-for="selectedApi" asp-items="@Model.Api">
</select>
请包含更多cshtml文件,至少包括@model声明和包含此select控件的表单标记。因为没有足够的上下文来回答您的问题。@casey的可能副本添加了一些更详细的信息来进行此更改,但是控制器操作中的selectedApi
和Api
的值仍然是Null
,我不能真正使用这种方法,因为将asp for
更改为SelectListItem
会将我的下拉列表更改为单个选择下拉列表。我需要它是一个多选下拉列表。@Josh Muroe u仍然需要模型中的Api值。更新了答案模型。你把@model链接到页面了吗?是的,我还有列表Api
。该模型链接到页面,因为页面上有其他输入字段,它们被传递到控制器操作中,效果很好。@Josh Muroe您需要将所选项设置为SelectListItem值的值类型。更新了答案