Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 下拉列表中选择的值未传递给控制器_C#_Asp.net Core Mvc - Fatal编程技术网

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值的值类型。更新了答案