Renderpartial или Renderaction - PullRequest
       29

Renderpartial или Renderaction

1 голос
/ 01 мая 2010

есть действие, которое генерирует активные вакансии. Код ниже;

публичный ViewResult OpenVacancies () { var openvacancies = db.GetActiveVacancies (); обратный просмотр (открытые вакансии); }

Я хочу использовать этот список на нескольких страницах, поэтому я думаю, что лучше всего использовать html.renderaction (пожалуйста, исправьте меня, если я здесь не прав).

Обратите внимание, что представление и элемент управления .ascx находятся в области.

Затем я создал вид, щелкнув правой кнопкой мыши внутри действия и создавая .ascx и строго типизированный вид вакансии. Я выбрал просмотр содержимого «Списка».

Затем я добавил эту строку на нужную страницу;

Обратите внимание, что представление и элемент управления .ascx находятся в области.

Я получил ошибку;

Не удалось найти тип или имя пространства имен 'Vacancy' (отсутствует директива using или ссылка на сборку?)

код .ascx ниже;

> "%>
<table>
    <tr>
        <th></th>
        <th>
            VacancyID
        </th>
        <th>
            JobTitle
        </th>
        <th>
            PositionID
        </th>
        <th>
            LocationID
        </th>
        <th>
            JobDescription
        </th>
        <th>
            JobConditions
        </th>
        <th>
            Qualifications
        </th>
        <th>
            RequiredSkills
        </th>
        <th>
            Certifications
        </th>
        <th>
            AdvertDate
        </th>
        <th>
            AdvertExpiryDate
        </th>
        <th>
            Status
        </th>
        <th>
            StaffLevel
        </th>
        <th>
            LineManagerEmail
        </th>
        <th>
            ApprovalFlag
        </th>
        <th>
            RequisitionDate
        </th>
    </tr>

<% foreach (var item in Model) { %>

    <tr>
        <td>
            <%= Html.ActionLink("Edit", "Edit", new { id=item.VacancyID }) %> |
            <%= Html.ActionLink("Details", "Details", new { id=item.VacancyID })%> |
            <%= Html.ActionLink("Delete", "Delete", new { id=item.VacancyID })%>
        </td>
        <td>
            <%= Html.Encode(item.VacancyID) %>
        </td>
        <td>
            <%= Html.Encode(item.JobTitle) %>
        </td>
        <td>
            <%= Html.Encode(item.PositionID) %>
        </td>
        <td>
            <%= Html.Encode(item.LocationID) %>
        </td>
        <td>
            <%= Html.Encode(item.JobDescription) %>
        </td>
        <td>
            <%= Html.Encode(item.JobConditions) %>
        </td>
        <td>
            <%= Html.Encode(item.Qualifications) %>
        </td>
        <td>
            <%= Html.Encode(item.RequiredSkills) %>
        </td>
        <td>
            <%= Html.Encode(item.Certifications) %>
        </td>
        <td>
            <%= Html.Encode(String.Format("{0:g}", item.AdvertDate)) %>
        </td>
        <td>
            <%= Html.Encode(String.Format("{0:g}", item.AdvertExpiryDate)) %>
        </td>
        <td>
            <%= Html.Encode(item.Status) %>
        </td>
        <td>
            <%= Html.Encode(item.StaffLevel) %>
        </td>
        <td>
            <%= Html.Encode(item.LineManagerEmail) %>
        </td>
        <td>
            <%= Html.Encode(item.ApprovalFlag) %>
        </td>
        <td>
            <%= Html.Encode(String.Format("{0:g}", item.RequisitionDate)) %>
        </td>
    </tr>

<% } %>

</table>

<p>
    <%= Html.ActionLink("Create New", "Create") %>
</p>

1 Ответ

0 голосов
/ 05 мая 2010

Во-первых, если вы просто хотите повторно использовать свой вид на нескольких страницах, вам следует использовать общий частичный вид (поместить его в общую папку) с <% Html.RenderPartial ("OpenVacancies"); %>.

Во-вторых, на основании вашего фрагмента кода ваше частичное представление выглядит не слишком строгим. Вместо

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

вы захотите что-то вроде этого:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Vacancy>>" %>
...