Ber*_*ker 11 c# linq asp.net-mvc entity-framework asp.net-mvc-3
我正在尝试在我的视图中填充下拉列表.任何帮助是极大的赞赏.谢谢.
错误:
无法将类型"System.Int32"强制转换为"System.Object"类型.
LINQ to Entities仅支持转换实体数据模型基元类型.
控制器:
ViewBag.category = (from c in new IntraEntities().CategoryItems
select new SelectListItem() {Text=c.Name, Value=""+c.ID }).ToList<SelectListItem>();
Run Code Online (Sandbox Code Playgroud)
视图:
Category:<br />@Html.DropDownList("category", (List<SelectListItem>)ViewBag.category)
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 20
这个怎么样:
ViewBag.category =
from c in new IntraEntities().CategoryItems.ToList()
select new SelectListItem
{
Text = c.Name,
Value = c.ID.ToString()
};
Run Code Online (Sandbox Code Playgroud)
以及如何使用强类型视图模型而不是ViewBag的一些弱类型的废话(这是我称之为的方式)?
像这样:
public class CategoryViewModel
{
public string CategoryId { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后:
public ActionResult Foo()
{
var model = new CategoryViewModel
{
Categories =
from c in new IntraEntities().CategoryItems.ToList()
select new SelectListItem
{
Text = c.Name,
Value = c.ID.ToString()
}
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
最后在你的强类型视图中:
@model CategoryViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.CategoryId, Model.Categories)
<button type="submit">OK</button>
}
Run Code Online (Sandbox Code Playgroud)
好多了,你不觉得吗?
您可以在转换之前将查询强制转换为.AsEnumerable(),以强制其使用Linq to Objects进行强制转换,但最好使用System.Data.Objects.SqlClient.SqlFunctions中可用的SQL兼容函数,如下所示:
(from c in new IntraEntities().CategoryItems
select new SelectListItem() {
Text = c.Name,
Value = SqlFunctions.StringConvert((double)c.ID).TrimStart()
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23797 次 |
最近记录: |