在我的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(); } } }
那么在我看来它有点像这样:
@Html.DropDownListFor(model => model.Status,(IEnumerable<SelectListItem>)Model.Statuses)
这一切都可以正常工作,除了sqlFunctions.StringConvert,默认情况下使字符串的长度为10,所以我最终在这个html:
<option value=" 7">Free to loan</option>
记下值字段中的间距.这是一个问题,因为我的viewmodel需要这个字段是一个int.
我可以简单地指定length参数,但这不是动态的.
有没有人看到这个问题,还是有一个解决方案呢?
谢谢,
缺口
解决方法
执行此操作的最简单方法可能是将转换工作卸载到服务器上,而不是数据上下文.如果您将数据层与表现层分开,则会自动发生.但为简单起见,我将坚持使用您目前的架构:
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(),Selected = false }) .ToList();