Html System.InvalidCastException遍历Viewdata
System.InvalidCastException遍历Viewdata 我需要替换代码Html System.InvalidCastException遍历Viewdata,html,asp.net-mvc,drop-down-menu,html-helper,Html,Asp.net Mvc,Drop Down Menu,Html Helper,System.InvalidCastException遍历Viewdata 我需要替换代码 "<%=Html.DropDownList("Part", (SelectList)ViewData["Parts"])%> ” 出于某种原因,以以下方式进行下拉 <select> <% foreach (Hexsolve.Data.BusinessObjects.HSPartList item in (IEnumerable<Hexsolve.Data.Busi
"<%=Html.DropDownList("Part", (SelectList)ViewData["Parts"])%>
”
出于某种原因,以以下方式进行下拉
<select> <% foreach (Hexsolve.Data.BusinessObjects.HSPartList item in (IEnumerable<Hexsolve.Data.BusinessObjects.HSPartList>)ViewData["Parts"])
{ %>
<option value="<%=item.Id %>">
<%=item.PartName %>
<%=item.IssueNo %></option>
<% } %>
</select>
将SelectedList转换为IEnumerable时出错)
错误:无法将类型为“System.Web.Mvc.SelectList”的对象强制转换为类型为“System.Collections.Generic.IEnumerable`1[Hexsolve.Data.BusinessObjects.HSPartList]”
这是迭代查看viewdata[]的正确方法吗?请帮助我解决这个问题。对不起,我之前的回答不正确 我认为问题在于
GetEnumerator
返回的是IEnumerator
,而不是您试图访问的IEnumerator
我建议采取以下措施:
<% foreach (SelectListItem item in (SelectList)ViewData["Parts"])
{ %>
<option value="<%= item.Value %>"><%= item.Text %></option>
<% } %>
及
var parts=新列表{
新零件{Id=1,IssueNo=1,PartName=“扳手”},
新零件{Id=2,IssueNo=1,PartName=“Hammer”}
};
var selectList=new selectList(
部分。选择(p=>
新的{Id=p.Id,
Name=p.PartName+“”+p.IssueNo.ToString()}),
“身份证”,
“名称”);
foreach(选择列表中的变量项)
{
Console.WriteLine(项值);
Console.WriteLine(item.Text);
}
/*
输出:
1.
锤子1
2.
扳手1
*/
希望这能有所帮助!如果您还有其他问题,您应该将其添加为注释或创建新问题。您的问题已完全更改,这意味着我下面的回答毫无意义。我已经为您提供了一个完整的问题答案。如果您不想使用它,则可以,但不要更改问题。对不起,我要把qst换成旧的qst。
public class Part
{
public int Id { get; set; }
public int IssueNo { get; set; }
public string PartName { get; set; }
}
var parts = new List<Part>{
new Part { Id = 1, IssueNo = 1, PartName = "Spanner" },
new Part { Id = 2, IssueNo = 1, PartName = "Hammer" }
};
var selectList = new SelectList(
parts.Select(p =>
new { Id = p.Id,
Name = p.PartName + " " + p.IssueNo.ToString()}),
"Id",
"Name");
foreach (var item in selectList)
{
Console.WriteLine(item.Value);
Console.WriteLine(item.Text);
}
/*
Output:
1
Hammer 1
2
Spanner 1
*/