各 Web ページにランダムなスポンサー画像を表示するコードに取り組んでいます。関数を呼び出すのに最適な場所は Views/Shared/_Layout.cshtml ページであると考えました。これは、すべてのページで読み込まれるページだからです。
ドメイン モデルのサービス クラスにChildActionOnly
関数を記述し、ホーム コントローラーに関数を記述し、Views/Home/Randomsponsor.cshtml の単純なビューで値を返し、Html.action を使用して共有レイアウトで関数を呼び出しました。
すべてが正常にビルドされますが、実行中に次のエラーが発生します:
{"The controller for path '/' was not found or does not implement IController."}
これを修正する方法を知っている人はいますか?
ドメイン プロジェクトのメソッド:
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;
}
HomeController で:
[HttpGet]
[ChildActionOnly]
public ActionResult RandomSponsor()
{
var model = service.advertsForCountry();
return PartialView("RandomSponsor", model);
}
Views/Home/ の簡易ビュー:
@{
ViewBag.Title = "RandomSponsor";
}
@Html.Action("RandomSponsor")
そして、View/Shared/_Layout.cshtml での私の関数呼び出しには、ナビゲーション バーなどが含まれています。
@Html.Action("RandomSponsor", "HomeController")
よろしく。