目前,我正在尝试在同一ViewModel中填充其他值。所以我的viewmodel最初是通过这个JsonResult方法填充的。
public virtual JsonResult GetInstitutionContacts(Guid? provideruid)
{
return Json(new { ContactViewModel = _repository.GetContactsByProviderUid(provideruid) }, JsonRequestBehavior.AllowGet);
}
当用户从下拉列表中进行选择时,将设置参数值。我的JsonResult方法使用的存储库如下所示:
public IQueryable<ContactViewModel> GetContactsByProviderUid(Guid? provideruid)
{
var q = from r in Context.vw_DistrictContacts.Where(p => p.ProviderUid == provideruid && p.School == AdminBuilding)
select new ContactViewModel
{
FamilyName = r.GivenNames.ToUpper(),
GivenName = r.FamilyNames.ToUpper(),
CourtesyTitle = r.Title,
ContactId = r.PersonUid
};
return q.Distinct();
}
我的上下文中的表视图(Context.vw_DistrictContacts)返回那些确切的字段(FamilyName,GiveName ...)。当用户随后选择另一个值时会发生此问题。 下拉选择然后触发此控制器方法:
public virtual JsonResult GetSchoolContacts(Guid provideruid)
{
return Json(new { ContactViewModel = _repository.GetContacts(provideruid) }, JsonRequestBehavior.AllowGet);
}
这就是存储库方法的样子:
public List<ContactViewModel> GetContacts(Guid? providerUid)
{
var q = from r in Context.vw_PersonToSdeUsers.Where(p => p.ProviderUid == providerUid)
select new ContactViewModel
{
SchoolName = r.SchoolName,
ContactId = r.PersonUid,
PersonUid = r.PersonUid,
FamilyName = r.GivenNames.ToUpper(),
GivenName = r.FamilyNames.ToUpper(),
SdeUserEmail = r.SdeUserEmail,
CourtesyTitle = r.ProgramDescription
};
return q.ToList();
}
表视图(Context.vw_PersonToSdeUsers)再次返回预期的内容。但返回值“q.ToList()”为空。我相信问题是我已经在使用ContactViewModel了。我还为表视图运行了select语句,它按预期返回。我还运行了提供程序过滤器,并再次按预期返回。
答案 0 :(得分:0)
谢谢我添加了一个实体标签也会添加一个linq到sql标签,因为这是我用于我的ORM。我已经解决了这个问题,但我觉得这有点破解。我目前实现的是另一个定义预期属性的模型,从这里我用GetContacts()方法填充它,一切都按预期工作。再次感觉有点黑客。