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

相关问题