2017-08-29 4 views
1

私はそれを飛び越えるのが難しいという問題があります。私はモデルを使用していますIndex.cshtmlメインページRazor MVCを使用して、通常のモデルと同じビューで再生可能な数値モデル

<div class="wpisDodatki"> 
    @foreach (var item in Model) 
    { 
     <div> @Html.DisplayFor(modelItem => item.Dzien)</div> 
    } 
    <p>test<br />test<br />test</p> 
</div> 

::のように見えるモデルを使用しています

@model IEnumerable<DluzynaSzkola.Models.Aktualnosci> 

反復:

を私はIEnumerableをモデルを使用しています私の_Layout.cshtmlで

@model DluzynaSzkola.Models.User 

_Layoutをロードすると、2つのモデルを使用しようとしていますが、禁止されています。

私はすでに2つの同様の方法で修正しようとしていました。

第一試み:含むラップモデルクラスを作成 :

namespace DluzynaSzkola.Models 
{ 
    public class Wrap 
    { 
     public IEnumerable<Aktualnosci> Wpisy { get; set; } 
     public DluzynaSzkola.Models.User UserData { get; set; } 
    } 
} 

コントローラ内のアクションが追加さ:

public ActionResult Aktualnosci() 
     { 
      var Wrap = new Wrap(); 
      Wrap.Wpisy = db.Indeks; 
      return View(Wrap); 
     } 
    } 

は、部分的なファイルを作成:_Dodatki.cshtmlを含む:

@model IEnumerable<DluzynaSzkola.Models.Aktualnosci> 

<div class="wpisDodatki"> 
    @foreach (var item in Model) 
    { 
     <div> @Html.DisplayFor(modelItem => item.Dzien)</div> 
    } 
    <p>test<br />test<br />test</p> 
</div> 

呼び出しを_Layout.cshtmlの部分:

_layoutで
<div>@Html.Partial("_Dodatki", Model.Wpisy) 

使用モデル:

辞書に渡されたモデルアイテムのタイプが「System.Collections.Generic.List`1 [です:

@model DluzynaSzkola.Models.Wrap 

は、それは私に例外を与えますDluzynaSzkola.Models.Aktualnosci] 'が、この辞書には' DluzynaSzkola.Models.Wrap 'というモデル項目が必要です。

第二試み:コントローラで 作成アクション:

public PartialViewResult Load() 
     { 
      return PartialView("~/Views/Aktualnosci/_Dodatki.cshtml"); 
     } 
    } 

有する部分ファイル_Dodatki。CSHTML:

@model IEnumerable<DluzynaSzkola.Models.Aktualnosci> 

<div class="wpisDodatki"> 
    @foreach (var item in Model) 
    { 
     <div> @Html.DisplayFor(modelItem => item.Dzien)</div> 
    } 
    <p>test<br />test<br />test</p> 
</div> 

とレイアウトファイルで呼び出すには:

Row5:  @foreach (var item in Model) 

第三の試行:一部のファイルに

System.NullReferenceException 

@Html.Partial("~/Views/Aktualnosci/_Dodatki.cshtml") 

それは私に例外を与える

部分的呼び出し210

@Html.Partial("~/Views/Aktualnosci/_Dodatki.cshtml", new List<DluzynaSzkola.Models.Aktualnosci>() 

は私にレンダリングされたビューには反復を与えませんでした。

部分図は前の例と同様です。

ノーマルモデルでIEnumerableモデルを処理する方法はもうありません。

+0

同じ名前の別の部分文字列がないかどうかを確認してください。エラーは、部分文字列がラップモデルクラスを受け取っているはずです。または、別の部分的に存在するか、部分的な部分を読み込むのではなく、他のコンポーネントを読み込むことができます。 –

+0

負の値は、部分的に1つだけです。 –

+0

あなたはモデルをビューに渡さないので(したがって 'null')モデルを渡します。 '@ H​​tml.Action()'を使用して、コレクションを生成したサーバメソッドを呼び出し、部分ビューを返します。レイアウトを使用する他のすべてのビューがそこから派生するベースビューモデルでない限り、レイアウトは '@ model'宣言を含むべきではありません。 –

答えて

0

IEnumerableとユーザーをラップするビューのモデルを作成しようとしていますか?

public class Wrap 
{ 
    public IEnumerable<Aktualnosci> Wpisy { get; set; } 
    public DluzynaSzkola.Models.User UserData { get; set; } 
} 

「メインページにある」と言うと、_Layoutを意味しますか?

+0

フィードバックありがとうございます。残念ながら、私はUser wrappedと同じ例外があります。 –

+0

_LayoutでviewModelを使用する必要がある理由を私に説明できますか? – CERVERA

+0

良い点、私は私の質問を編集しました。私のモデルは '@model DluzynaSzkola.Models.Wrap'で呼び出されます。 P.S. "私のメインページで"私はインデックスを意味します。cshtml –

関連する問題