【发布时间】:2013-05-30 02:28:43
【问题描述】:
我正在做一个 mvc 项目,我想在每个页面上显示一个赞助商图片。
但我在将它们显示到每个视图呈现的共享布局页面中时遇到了困难。
我在我的域服务类中创建了一个函数,我在其中搜索学生的学校,因为学校链接到一个国家,而不是学生。 当我得到那个 countryId 时,我会搜索每个广告的 countryId 等于学校的 countryId 的国家。在这种情况下,我会查找该特定广告的赞助商,将它们放入 SponsorList,从该 SponsorList 中选择一个随机赞助商并返回 SponsorCompany(因为我将每个赞助商图像重命名为公司名称)。
现在我想将该函数调用到共享布局中,因此每次页面呈现时,都会为该特定学生显示一个随机的赞助商图像。但我不知道如何调用该函数,因为共享布局没有控制器类。
public String advertsForCountry()
{
String studentSchool = finder.getLoggedStudent().SchoolId;
int studentCountry = db.Schools.Find(studentSchool).CountryId;
List<Sponsor> sponsorsForStudent = new List<Sponsor>();
List<Advert> adverts = db.Adverts.ToList();
foreach(Advert adv in adverts)
{
foreach(Country cntry in adv.Countries)
{
if(cntry.CountryId == studentCountry)
{
sponsorsForStudent.Add(adv.Sponsor);
}
}
}
Random random = new Random();
int randomSP = random.Next(0, sponsorsForStudent.Count()-1);
string sponsorAdvert = sponsorsForStudent.ElementAt(randomSP).SponsorCompany;
return sponsorAdvert;
}
抱歉,英语不是我的母语。
【问题讨论】:
-
考虑做一个子动作。
-
我的建议是忘记
static method,因为它不是正确的MVC模式,业务模型的逻辑不应该在View中。创建一个ViewModel,然后返回一个简单的PartialView绑定到ViewModel。
标签: c# asp.net-mvc database layout