如何将参数传递给局部视图以显示db内容?

时间:2010-03-15 14:31:08

标签: asp.net-mvc

我从数据库中获取内容。如何使用部分视图使用该数据库在页面上显示内容?
数据库表:内容
[Id,Content]这些是2个字段

我想使用部分视图从db获取内容 我如何将id传递给局部视图并在视图页面中显示内容?

2 个答案:

答案 0 :(得分:6)

您可以使用Html.RenderAction

public class MyController 
{
    [ChildActionOnly]
    public ActionResult Foo(int id) 
    {
        var content = GetContentFromDatabase(id);
        return Content(content, MediaTypeNames.Text.Html);
    }
}

在您的视图中包含部分:

<%= Html.RenderAction("foo", "mycontroller", new { id = 5 }) %>

备注:RenderAction是现已发布的ASP.NET MVC 2 RTM的一部分。对于ASP.NET MVC 1,您可以查看包含此扩展方法的Futures程序集。

答案 1 :(得分:0)

在您的视图中,使用Html.RenderPartial功能。有几种不同的用途:

您可以将模型传递到局部视图:<% Html.RenderPartial("partialName", model); %>

或者您可以传递全新的ViewDataDictionary<% Html.RenderPartial("partialName", viewData); %>

有关完整文档,请参阅here

编辑:(评论回答):

我会将这些数据作为您视图模型的一部分。例如,假设你的模型中有:

 List<Person> People;

在您的视图中,您希望遍历其中的每一个,并使用PartialView显示详细信息:

 <% foreach( var p in Model.People){ %>
         <p> <% Html.RenderPartial("personPartial", p); %> </p>
 <%}%>

现在,您的PartialView可能如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Person>" %>
<%=Model.PersonName%>