web-dev-qa-db-ja.com

ascxファイルでのHtml.RenderPartial()の使用

AcsxファイルでHtml.RenderPartialを使用しようとしていますが、エラーが発生します。

コンパイラエラーメッセージ:CS1973: 'System.Web.Mvc.HtmlHelper'には 'RenderPartial'という名前の該当するメソッドはありませんが、その名前の拡張メソッドがあるようです。拡張メソッドは動的にディスパッチできません。動的引数をキャストするか、拡張メソッド構文なしで拡張メソッドを呼び出すことを検討してください

<a href="/projects/<%=project.Id %>">
  <% Html.Label("fdf"); %>
  <% Html.RenderPartial("ProjectName", Model.Id); %></a></li>
 <%} %>

ただし、必要な名前空間をインポートしたので、エラーにはなりません

<% Html.Label("fdf"); %>

AscxファイルでHtml.RenderPartialを使用する方法はありますか?

23
takayoshi

モデルがdynamicであるため、コンパイラは正しい方法を選択できません。呼び出しを次のように変更します。

<% Html.RenderPartial("ProjectName", (int)(Model.Id)); %>

または、他のデータ型IDです。

40
GvS

他の誰かが同じ間違いをした場合に備えて:

@Model MyViewModel

これはモデルを動的として扱います

@model MyViewModel

これは正しく強く型付けされたビューです。大文字の不足に注意してください!

元の質問とは異なり、これはRazorであることに注意してください。

8
StuartQ

私が通過することがわかった唯一の方法。 IEnumerableは、ローカル変数を作成してこれを渡すことでした。例@{ IEnumerable<Demo.Models.Friend> friends = Model.Friends; Html.RenderPartial("_FriendsList", friends); }

Html.RenderPartial("_FriendsList", (IEnumerable<Demo.Models.Friends>)(Model.Friends));が機能しませんでした!

2
Muckman