1. ホーム
  2. asp.net-mvc

[解決済み] コントローラ '...' でパブリックアクションメソッド '...' が見つかりませんでした。

2022-03-04 02:01:47

質問

私はmvcプロジェクトのすべてのビューページにランダムな画像を配置したいと思いました。そこで、私はpartialViewを返すメソッドを作成し、共有レイアウトページでそのメソッドを呼び出します。

これは、正しいユーザー名とパスワードでログインしようとすると、うまく動作します。使用者はログインし、各ページにランダムな画像が含まれます。しかし、私はユーザー名とパスワードの無効な組み合わせを与えるとき。で呼び出したいコントローラが見つかりませんでした。 @Html.Action というエラーメッセージと、もちろんランダムな画像とともにログインビューが返されるはずです。

InnerExceptionです。

{コントローラ 'Project.WebUI.Controllers.HomeController' でパブリックアクションメソッド 'RandomSponsor' が見つかりませんでした。}

私のHtml.Actionを共有レイアウトで表示します。

@Html.Action("RandomSponsor", "Home")

homecontroller のメソッドです。

    [HttpGet]   
[ChildActionOnly]
public ActionResult RandomSponsor()
{
    var model = service.getRandomSponsor();
    return PartialView("RandomSponsor", model);
}

getRandomSponsorメソッドは問題なく動作します。これは常に1つのランダムな文字列値を返し、RandomSponsor.cshtmlビューに返されるものです。

RandomSponsor.schtml (画像文字列のみ)

<img src="~/Content/Images/Advert/@(Model)" alt="a" />

この問題をウェブで検索しましたが、解決策が見つかりませんでした。誰かこの問題の答えを知っていますか? HttpPostのHttpGetに何か原因があるのでは?

よろしくお願いします。

解決方法は?

実行中のリクエストが POST というメソッドを探そうとします。 RandomSponsor を受け入れる HttpPost . もしこれが理にかなっているならば HttpGet で、うまくいくはずです。