【发布时间】:2020-09-30 23:09:13
【问题描述】:
我收到此错误
无法将 System.Collections.Generic.List 隐式转换为 System.Collections.Generic.IEnumerable
在使用 C# Razor 构建的页面中尝试使用列表构建 @Html.DropDownList() 时。
有一个名为 SubProgram.cs 的 C# 类,使用以下方法返回 List<>:
public List<SubProgram> SubProgramCodeDescriptionList()
{
List<SubProgram> SubPrograms = new List<SubProgram>();
// Get the list of SubPrograms for this AcctIII role_code from BudgetAcct3ToSubProgram table
using (var db = Database.Open("DBNAME"))
{
string sql = @"
SELECT l.SubProgramID, l.SubProgram + ' ' + l.SubProgramDesc AS SubProgramDesc
FROM BARF_SubPrograms l
WHERE l.Deleted = 0
ORDER BY l.SubProgramDesc";
var ListSubPrograms = db.Query(sql);
foreach (var SubProgram in ListSubPrograms)
{
SubProgram item = new SubProgram ();
item.SubProgramID = SubProgram.SubProgramID;
item.SubProgramCodeDescr = SubProgram.SubProgramDesc;
SubPrograms.Add(item);
}
db.Close();
return SubPrograms;
}
}
这是 SubProgram 类,该方法是该类的一部分:
public class SubProgram
{
private int subprogramid;
private string subprogramcode;
private string subprogramcodedescr;
public int SubProgramID
{
get { return subprogramid; }
set { subprogramid = value; }
}
public string SubProgramCode
{
get { return subprogramcode; }
set { subprogramcode = value; }
}
public string SubProgramCodeDescr
{
get { return subprogramcodedescr; }
set { subprogramcodedescr = value; }
}
}
在 Razor 页面的 C# 部分,我创建了一个 SubProgram 类型的对象来填充 SubProgramList:
// Create List boxes variable need for this add
List<SubProgram> SubProgramIDdropdownlist = new List<SubProgram>();
// Create SubProgram object so the method can be called
SubProgram subProgram = new SubProgram();
// Pass object to method SubProgramIDdropdownlist to return all of the SubPrograms
SubProgramIDdropdownlist = subProgram.SubProgramCodeDescriptionList();
在上面这个 C# Razor 部分下面的 HTML 页面的 body 部分中,我尝试使用上面的代码填充 DropDownList:
<label class="FieldLabels">"Search SubPrograms"</label>
@Html.DropDownList("SubProgramCodes",
SubProgramIDdropdownlist,
new {
@id = "Column1",
@class = "EditTextBox",
}
)
在最后一部分中,错误发生在 SubProgramIDdropdownlist 上,这就是我得到错误的地方
无法将 System.Collections.Generic.List 隐式转换为 System.Collections.Generic.IEnumerable
还有其他相关的帖子,但不是来自类方法。请帮忙,我知道这可能需要使用演员表,但甚至不确定从哪里开始正确转换。
【问题讨论】:
-
你是如何在 Razor 页面顶部传递你的模型的?
-
我没有传递模型,我使用上面添加的代码创建了一个 C# 类来创建类 SubProgram。
-
您不必将
IEnumerable<SelectListItem>传递给DropDownList 吗? -
希望你的答案在这里:stackoverflow.com/questions/34482323/…
-
您可以参考 Microsoft 文档以查看它是否采用 IEnumerable
:docs.microsoft.com/en-us/dotnet/api/…
标签: c# html oop razor asp.net-webpages