2017-08-29 97 views
1

我有問題,我很難跳過它。使用Razor MVC在正常模型中播放的IEnumerable模型使用Razor MVC

在我_Layout.cshtml我使用的IEnumerable型號:

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

在主網頁Index.cshtml我使用模式:使用該模型看起來像

@model IEnumerable<DluzynaSzkola.Models.Aktualnosci> 

迭代

@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中:

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

使用模型_layout:

@model DluzynaSzkola.Models.Wrap 

這讓我異常:

傳遞到字典的模型項的類型爲「System.Collections.Generic.List`1 [ 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> 

,並呼籲在佈局文件:

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

這讓我異常:

System.NullReferenceException 

在部分文件:

Row5:  @foreach (var item in Model) 

第三嘗試:

調用部分有:

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

給了我在渲染視圖沒有迭代。

部分視圖與前面的示例類似。

我不知道如何處理正常的IEnumerable模型。

+0

檢查您是否沒有具有相同名稱的另一個部分,錯誤是說您的部分應該接收包裹模型類。或者存在另一個部分,或者錯誤不是加載部分,而是加載視圖中的其他組件。 –

+0

負面的,只有1個部分。 –

+0

因爲您沒有將模型傳遞給視圖(因此它的'null')。使用'@ Html.Action()'調用填充集合的服務器方法,然後返回你的局部視圖。佈局不應該包含'@ model'聲明,除非它的基本視圖模型來自使用該佈局的所有其他視圖派生的基礎視圖模型。 –

回答

0

你是否試圖爲你的視圖創建一個模型來包裝你的IEnumerable和你的用戶?

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

當你說「在我的主頁上」,你的意思是_Layout?

+0

感謝您的反饋意見。不幸的是,我與用戶封裝有相同的例外。 –

+0

你可以向我解釋爲什麼你需要在你的_Layout中使用viewModel? – CERVERA

+0

好點,我編輯了我的問題。我的模型被稱爲:'@model DluzynaSzkola.Models.Wrap'。附:通過「在我的主頁」我的意思是指數。cshtml –

相關問題