2014-04-15 24 views
1

我是MVC的初學者。如果某個布爾型字段爲true,我將如何在部分視圖中的事件表中顯示數據庫中的數據。MVC4部分視圖錯誤「未將對象引用設置爲對象的實例。」

這是我的部分觀點:

@model IEnumerable<TheBigEvent.Models.RecommendedEvents> 
<table> 
<tr> 

    <td> 
    @Html.DisplayNameFor(model => model.Event_Name) 
     </td> 
     <td> 
     @Html.DisplayNameFor(model => model.Event_Date) 

    </td> 
    </tr> 

<tr> 

     @foreach (var item in Model) { 

      <td> 

    @Html.DisplayFor(modelItem => item.Event_Name) 
</td> 
    <td> 
    @Html.DisplayFor(modelItem => item.Event_Date) 
     </td> 
    } 

</tr>       
    </table> 

這是我的控制器

public ActionResult _RecommendedEvents() 

    { 


     var recommendedevents = from Events in db.Database1 
           select Events; 

     recommendedevents = recommendedevents.Where(s => s.Recommended.Equals(true)); 

     return PartialView("_RecommendEvents", recommendedevents); 


    } 

和代碼,用於顯示partialview

@Html.Partial("_RecommmndedEvents") 

這是我收到

錯誤

enter image description here

[編輯]不設置到對象的實例

public ActionResult _RecommendedEvents(RecommendedEvents model) 

    { 

     model = new RecommendedEvents(); 


     var recommendedevents = from Events in db.Database1 
           select Events; 


     recommendedevents = recommendedevents.Where(s => s.Recommended.Equals(true)); 








     return View(model); 


    } 

回答

2
@{ 
     Html.RenderAction("view","controller") 
} 

這將跳轉到指定控制器的行動,必須與正確的模型

1

對象的引用一直是我的一個未初始化列表。在設置之前嘗試初始化推薦事件。像

List<Events> recommendedevents = new List<Events>(); 

替換事件與任何類型。

Html.Partial中的第一個參數是部分名稱而不是方法調用。您需要可以通過模型視圖想到了一個視圖模型,並把它傳遞給部分

@Html.Partial("_RecommendedEvents", Model.Events) 

,或者通過Ajax調用加載部分。看到我的回答這裏的一個例子How do I render a partial form element using AJAX

0

@HTML.Partial()功能不通過任何控制器動作去渲染返回partialview ,它只是在文檔中的該位置呈現視圖的HTML。並且您沒有將IEnumerable<TheBigEvent.Models.RecommendedEvents>傳遞到該部分視圖,因此當該部分呈現時,Model爲空。

IEnumerable<TheBigEvent.Models.RecommendedEvents>對象到你的主頁的視圖模型,也許就在ViewBag東西,它在調用分部方法時傳遞給局部視圖:

@HTML.Partial("_RecommmndedEvents", ViewBag.RecommendedEvents)

在頂層頁面的控制器操作,請設置ViewBag.RecommendedEvents就像您在上面的控制器代碼中如何實例化它。

+0

好。 RecommendedEvents>在視圖中。並將該模型添加到@Html部分。部分(「_推薦的事件」,模型);但它仍然會出現相同的錯誤 – user3536954

+0

您是否在頂層控制器操作中實例化它?您在問題中發佈的操作沒有得到執行,因此您需要調用該回購代碼並將該對象作爲模型傳遞到頂層視圖。將該控制器操作發佈爲您的問題的編輯。 – Graham

+0

在這裏,你去。我不知道你的意思是頂級控制器的行動 – user3536954

0

的錯誤意味着你的模型爲空,當您使用Ajax PartialView()使用,否則,你可以寫如下代碼:所以我已經把@model的IEnumerable

return View("_RecommendEvents", recommendedevents); 
相關問題