0

Kidsコレクションをメイン ビューからパーシャル ビューに渡そうとしています。このメイン ビューは厳密に型指定されており、Kids属性has_manyMainModel.

デフォルトの詳細ビューがあり、@model MyApp.Models.MainModel.

このビュー内で、その子を表示したいのですが、

@Html.Partial("_KidsView", Model.Kids)

これは my で次のように構成されていますMainModel.cs:

public ICollection<Kid> Kids { get; set; }

そして私の頭頂部で次のように指定されています_KidsView

@model ICollection<MyApp.Models.Kid>

私はInvalidOperationExceptionそれが言う場所を得ています

The model passed into this the dictionary if of type
'System.Data.Entity.DyanmicProxies.MainModel_#WHOLE_BUNCH_OF_NUMBERS'
but this dictionary requires a model item of type 
'System.Collections.Genereic.ICollection[MyApp.Models.Kid]

パーシャルを使用せずにforeachループを直接呼び出してみまし@foreach (var item in Model.Kids)たが、どちらも機能しませんでした。

これを適切に渡すにはどうすればよいですか?

明らかに間違ったことをしているような気がしますが、それを見ることはできません。

編集:

わかりましたので、ソリューションは機能していません。私のモデルの 1 つに何か問題があると思います。

Kid.cs は次のとおりです。

[Column("main_model_id")]
public int MainModelID { get; set; }
public virtual MainModel MainModel {get; set; }

および MainModel.cs

public ICollection<Kid> Kids { get; set; }

4

2 に答える 2

0

これを行う方法は次のとおりです。これがあなたのメインモデルだとしましょう:

public class MainModel
{
  public IEnumerable<Kid> Kids { get; set; }
  // Other properties
}

メイン ビューでこれを行います。

@model MyApp.Models.MainModel

@Html.EditorFor(model => model.Kids)

次に、以下のような部分ビューを作成し、Kid.cshtml という名前を付けて、Views/Shared/EditorTemplates の下に配置します。

@model MyApps.Models.Kid

@* Your html helpers (input fields) *@
于 2013-07-31T17:25:04.350 に答える