xqw*_*zid 16 asp.net entity-framework asp.net-mvc-3
在我的ViewModel中,我将返回以下内容以获取下拉列表:
public IEnumerable<SelectListItem> Statuses
{
get
{
using (var context = new AssetManager.Models.AssetManagerEntities())
{
var query = from status in context.AssetStatuses
where status.Reserved != true
select new SelectListItem()
{
Value = SqlFunctions.StringConvert((double)status.Id),
Text = status.Name,
Selected = false
};
return query.ToList();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的视图中它有点像这样:
@Html.DropDownListFor(model => model.Status, (IEnumerable<SelectListItem>)Model.Statuses)
Run Code Online (Sandbox Code Playgroud)
这一切都正常,除了SqlFunctions.StringConvert,默认情况下使字符串长度为10,所以我最终在html中得到这个:
<option value=" 7">Free to loan</option>
Run Code Online (Sandbox Code Playgroud)
记下值字段中的间距.这是一个问题,因为我的ViewModel要求此字段为int.
我可以简单地指定长度参数,但这不是动态的.
有没有人见过这个问题,或者有解决方案呢?
谢谢,尼克
tim*_*tim 33
将其更改为:
Value = SqlFunctions.StringConvert((double)status.Id).Trim(),
Run Code Online (Sandbox Code Playgroud)
下面蒂姆的答案是比这个更好的解决方案,但我无法删除已接受的答案,并且OP没有回应我接受他的答案的请求。
最简单的方法可能是将转换工作转移到服务器上,而不是数据上下文上。如果您将数据层与表示层分离,这会自动发生。但为了简单起见,我将坚持使用当前的架构:
var query = from status in context.AssetStatuses
where !status.Reserved
select new
{
status.Id,
status.Name
};
return query.AsEnumerable()
.Select(status => new SelectListItem
{
Value = status.Id.ToString(),
Text = status.Name,
Selected = false
})
.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5586 次 |
| 最近记录: |