0

試圖在asp.net中的主頁上放置一個強類型局部視圖,但它似乎不會工作它,這裏是我的代碼在一個主asp.net上的多個部分視圖

新的asp.net和部分觀點。

控制器:

public ActionResult VenuePartial() 
    { 
     ViewData["Message"] = _entities.VenuePartialList(); 
     return View(); 
    } 

庫:

public IEnumerable<Venue> VenuePartialList() 
    { 
     var list = from s in _entities.Venue 
        orderby s.name ascending 
        select s; 
     return list.ToList(); 
    } 

IRepository:

IEnumerable<Venue> VenuePartialList(); 

索引頁:

<%Html.RenderPartial("~/Views/Venue/VenuePartial.ascx");%> 

任何幫助將不勝感激,儘快請 問候牛逼

+0

您的部分視圖'VenuePartial'是IEnumerable的一個強類型部分'? – 2011-04-11 22:10:00

回答

0

也許你需要通過一個模型來此部分:

<% Html.RenderPartial("~/Views/Venue/VenuePartial.ascx", ViewData["Message"]); %> 

順便說跆拳道是您使用ViewData["Message"]傳遞的模型,而不是使用一個模型和一個強類型的視圖:

public ActionResult VenuePartial() 
{ 
    return View(_entities.VenuePartialList()); 
} 

然後:

<% Html.RenderPartial("~/Views/Venue/VenuePartial.ascx", Model); %> 

這顯然假定您的部分是強打字IEnumerable<Venue>。如果輸入的是單個Venue,則可能還會考慮使用Editor/Display Templates。因此,在你的主觀點:

<%= Html.DisplayForModel() %> 

,並在相應的顯示模板(~/Views/Shared/DisplayTemplates/Venue.ascx):

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<AppName.Models.Venue>" %> 
<span> 
    <%= Html.DisplayFor(x => x.SomePropertyOfVenue) %> 
</span> 

現在的顯示模板將被渲染爲模型收集的各個項目。

+0

對不起,我是新來的,所以把ViewData [「消息」]是錯的。你的意思是把它們放在代碼中使它工作或者只是其中的一個:<%Html.RenderPartial(「〜/ Views/Venue/VenuePartial.ascx」,ViewData [「Message」]); %>或<%Html.RenderPartial(「〜/ Views/Venue/VenuePartial.ascx」,Model); %>或兩者? – Trev 2011-04-11 22:15:26

+0

@特雷夫,哎呀抱歉。如果你是MVC的新手,這很正常。即使是* MVC的老傢伙也犯了同樣的錯誤,並使用'ViewData',所以不用擔心。是的,兩者都是相同的。這只是你不應該使用'ViewData'。 – 2011-04-11 22:17:26

+0

是的,它是針對部分視圖的強類型。我已經把<%Html.RenderPartial(「〜/ Views/Venue/VenuePartial.ascx」,Model); %>,現在我得到這個錯誤消息:對象引用未設置爲對象的實例。這是參考<%foreach(模型中的var項){%>,這是makin progess – Trev 2011-04-11 22:25:01

相關問題