Как передать параметры для частичного просмотра, чтобы показать содержимое БД - PullRequest
5 голосов
/ 15 марта 2010

Я получаю свой контент из базы данных. Как я могу использовать частичные представления для отображения содержимого на странице, использующей эту базу данных?
таблица базы данных: содержимое
[Id, Content] это 2 поля

Я хочу получить содержимое из БД, используя частичные представления.
Как я передам идентификатор для частичного просмотра и покажу содержимое на странице просмотра?

Ответы [ 2 ]

6 голосов
/ 16 марта 2010

Вы можете использовать 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 , содержащую этот метод расширения.

0 голосов
/ 15 марта 2010

В вашем представлении используйте функцию Html.RenderPartial. Есть несколько вариантов использования:

Вы можете перейти в модель к частичному виду: <% Html.RenderPartial("partialName", model); %>

Или вы можете передать совершенно новый ViewDataDictionary: <% Html.RenderPartial("partialName", viewData); %>

Полную документацию см. здесь .

РЕДАКТИРОВАТЬ: (Ответ на комментарий):

Я бы включил эти данные как часть модели вашего представления. Например, скажем, в вашей модели у вас есть:

 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%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...