質問

背景

私を受け、以下の場合にはエラーを描こうとカスタマーサポートにASP.NET MVC.これまでASP.NET MVCと、エラーが簡単に解決するから私が完全に理解下さい。

質問 (の方にたくないという読みもの):

何が原因。

例外の詳細: System.InvalidOperationException:モデルの項目に渡された 辞書の種類 'MyApp.Models.ClassroomFormViewModel' この辞書が必要でモデル 項目の種類 'System.Collections.Generic.IEnumerable1[MyApp.モデルです。ClassroomFormViewModel]".


Entites

私は二つの事業体との親子関係です。

Classroom                   StickyNote 
------------                -----------
Id          1 -----         Id
Name               \        Name
(...)               \       Content
                     ---- * ClassroomID

モデル

Model のStickyNoteコンテンツが異なるテーブル、アクセスを使用 Linq-to-SQL を通じて、以下の方法:

public IQueryable<StickyNote> GetStickyNotesByClassroom(Classroom classroom)
{
     return from stickynote in db.StickyNotes
            where stickynote.ClassroomID == classroom.ID
            select stickynote;
}

エラー

私の部分のビューを表示 StickyNote コンテンツで'所属の教室です。問題は私の走りにはとんでのトータルプロデュースを行い、発生する場合があります。エラー:

モデルの項目に渡された 辞書のタイプ: 'MyApp.Models.ClassroomFormViewModel' この辞書が必要でモデル 項目の種類 'System.Collections.Generic.IEnumerable1[MyApp.モデルです。ClassroomFormViewModel]".説明:する独自のレンダリングメカニズムの例外 発生した時の実行 現在のwebます。を確認してください スタックトレース情報 エラーが発 のコードです。

例外の詳細: System.InvalidOperationException:モデルの項目に渡された 辞書の種類 'MyApp.Models.ClassroomFormViewModel' この辞書が必要でモデル 項目の種類 'System.Collections.Generic.IEnumerable1[MyApp.モデルです。ClassroomFormViewModel]".

カスタマーサポート

ここでは、一部コード:

<%@ Control Language="C#" Inherits="
System.Web.Mvc.ViewUserControl<IEnumerable<MyApp.Models.ClassroomFormViewModel>>" %>

    <table background="../../images/corkboard.jpg">

    <% foreach (var items in Model) { %>

        <tr>
        <% foreach (var item in items.StickyNotes) { %>
            <td><div class="sticky_note_container">

<!-- actually use a post it note here on the page -->
<div class="sticky_note">
<div class="sticky_note_content">
<!-- content of sticky note here -->
<% Html.ActionLink(item.Name, "ShowStickyNoteContent"); %>
<!-- end of content of sticky note -->
</div>
</div>
<div class="sticky_note_footer">&nbsp;</div>
<br clear="all" />
</div>
         </td>
      <% } %>
     </tr>
   <% } %>
</table>

親ビュー

このコードから見ると同じものを見ることができない:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits=
"System.Web.Mvc.ViewPage<MyApp.Models.ClassroomFormViewModel>" %>
{...}
  <% 
     Html.RenderPartial("StickyNotes", Model);
  %>
役に立ちましたか?

解決

すぐに単一のインスタンスのClassroomFormViewModelのビューは期待を集める IEnumerable<ClassroomFormViewModel>.

変更内で宣言さPartialViewる

Inherits="
System.Web.Mvc.ViewUserControl<MyApp.Models.ClassroomFormViewModel>"

または

何をした後は本当にみるコード) IEnumerable<ClassroomFormViewModel>

でのモデルでのお呼び出しのページです IEnumerable<ClassroomFormViewModel>

基本的に行うこ

public void Render(ClassroomFormViewModel model)
{
    RenderPartial(model) //Cannot cast single instance into an IEnumerable
}
public string RenderPartial(IEnumerable<ClassroomFormViewModel> model)
{
    //Do something
}

他のヒント

お部分は開始

<%@ Control Language="C#" Inherits="
System.Web.Mvc.ViewUserControl<MyApp.Models.ClassroomFormViewModel>" >

しょうが、表示したい一つの教室です。表示したい場合は、しっ利用の一覧viewmodels.利用viewmodelのリストが記述されている教室

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top