0

IRepositoryBase列名实体框架的基础信息库

IQueryable<T> GetAll(Expression<Func<T, bool>> predicate = null, params Expression<Func<T, object>>[] includes); 

RepositoryBase

public IQueryable<T> GetAll([OptionalAttribute][DefaultParameterValueAttribute(null)]Expression<Func<T, bool>> predicate, params Expression<Func<T, object>>[] includes)  
{ 
    var set = CreateSet().IncludeMultiple(includes); 
    return (predicate == null) ? set : set.Where(predicate);    
} 

IAccountService

IEnumerable<int> GetAllReferenceIds(); 

帐户服务

public IEnumerable<int> GetAllReferenceIds()  
{  
    var accountOwners = _accountOwnerRepository.GetAll(); 
    return accountOwners.Select(m => m.ReferenceId).ToList(); 
} 

的AccountController

public ActionResult ReferenceIdPartial()  
{ 

ViewData["AccountOwners"] = accountOwnerService.GetAllReferenceIds(); 

return PartialView(); 

} 

MVC局部视图 - DevExpress的组合框MVC扩展

settings.Properties.Columns.Add("ReferenceId", "Reference Id", Unit.Percentage(100)); 

错误 - 列ReferenceId找不到

我通过GetReferenceIds()发送int集合

有没有办法从Controller调用列。就像AccountOwner(a => a.ReferenceIds,选择ReferenceIds) - 我应该能够获得列名以及数据。

谢谢你的时间。

+0

谁抛出异常“*列ReferenceId未找到*”?组合框代码还是来自'GetAllReferenceIds'方法? – Slauma

+0

它来自组合框。谢谢 – tjRulz

回答

0

这是一个射进黑暗中,我实际上只了解你的最后一句话“我应该能够获得列名以及数据” - 并可以想像,如果一个集合绑定到组合框(我不知道DevExpress组合框扩展)组合框控件想要对象的集合属性名称/属性值对而不是只有一个值集合(int)。所以,不接触AccountService你可以尝试:

public ActionResult ReferenceIdPartial()  
{ 
    ViewData["AccountOwners"] = accountOwnerService.GetAllReferenceIds() 
     .Select(i => new { ReferenceId = i }); 

    return PartialView(); 
} 

ViewData["AccountOwners"]现在将举行(匿名)对象的集合。每个对象都有一个名为ReferenceId的属性,其值为i,取自您从服务返回的ID。

+0

嗨Slauma - 感谢您的答复。当我这样做时,我仍然可以看到所有列。然后我能够得到referenceId列。但是我不想得到所有的列 - 因为列的数量是〜45,它正在影响应用程序的速度。 – tjRulz

+0

@tjRulz:但'GetAllReferenceIds'只返回'IEnumerable '。这只是一个数字清单。如何包含所有列? – Slauma

+0

嗨Slauma。对不起。在我阅读您的回复之前,我在最后更改了代码。然后我可以使用上面的代码。再次感谢。 – tjRulz