目前,我正在尝试在同一个 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 语句,它按预期返回。我还运行了提供程序过滤器,它再次按预期返回。