一个主asp.net上的多个部分视图

时间:2011-04-11 22:06:08

标签: asp.net-mvc controller repository partial-views irepository

尝试在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");%>

请尽快感谢任何帮助 关于T

1 个答案:

答案 0 :(得分:0)

也许您需要将模型传递给此部分:

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

顺便说一句,WTF使用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>

现在将为模型集合的每个项目呈现显示模板。