0

いくつかの部分的なビューを含む asp.net mvc4 ビューがあります。このビューには、グリッド内の一部の要素をフィルタリングする送信ボタンも含まれています。以下を参照してください。

構成.cshtml

<div id="MyDiv">
    @Html.Partial("../Grids/_CompGrid")
</div>

 @using (Ajax.BeginForm("Search", "Component", ...)
 {
     <input type="submit" name="_search" value="@Resource.CaptionComponentApplyFilter" />
 }

ComponentController.cs

    public PartialViewResult Search()
    {
        // Do some stuff

        return PartialView("_CompGrid");
    }

上記の部分ビューを返すと、クラッシュします。部分ビューへの正しいパスを処理していないようです。以下のメッセージ エラーを参照してください。

The partial view '_CompGrid' was not found or no view engine supports the searched locations.
The following locations were searched:
~/Views/Component/_CompGrid.aspx
~/Views/Component/_CompGrid.ascx
~/Views/Shared/_CompGrid.aspx
~/Views/Shared/_CompGrid.ascx
~/Views/Component/_CompGrid.cshtml
~/Views/Component/_CompGrid.vbhtml
~/Views/Shared/_CompGrid.cshtml
~/Views/Shared/_CompGrid.vbhtml

上記のファイルのディレクトリ構造の概要を以下に示します。

/root
  |
  |__ Controllers
  |       |
  |       |__ ComponentController.cs
  |
  |__ Views
  |       |
  |       |__ Home
  |       |     | 
  |       |     |__ Configure.cshtml
  |       |
  |       |__ Grids
  |       |     |
  |       |     |__ _CompGrid.cshtml
  |       |
  |       |  

どうすればこれを解決できますか?

解決:

関数の戻り行の下を置き換えます。

    public PartialViewResult Search()
    {
        // Do some stuff

        return PartialView("_CompGrid");
    }

に:

return PartialView("../Grids/_CompGrid");

とにかく、誰かがより良いアイデアを持っていれば、それは大歓迎です。

4

1 に答える 1