0

強く型付けされたビューで強く型付けされたパーシャルをレンダリングできませんか?

しようとすると、次のエラーが発生します。

ディクショナリに渡されるモデル項目は、'System.Data.Linq.Table 1[UI.Models.vwProject]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[UI.Models.ProjectStatus]' 型です。

ViewData.Model を使用して両方のビューにデータを入力します

public ActionResult Index()
{
    ViewData.Model = project.vw_Projects;
    return View();
}

public ActionResult ProjectStatus()
{
    ViewData.Model = project.ProjectStatus;
    return View();
}

これが私の見解です:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<UI.Models.vwProject>>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <div>
    <table>
    <tr>
        <th>
            Project
        </th>
        <th>
            Hours
        </th>
    </tr>
    <tr>
        <td>
            <%= Html.Encode(item.ProjectCode) %>
        </td>
        <td>
            <%= Html.Encode(item.ProjectHours) %>
        </td>
    </tr>

<div>
 <%  Html.RenderPartial("ProjectStatus"); %>
</div>

</asp:Content>

ここに私の部分があります:

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

    <table>
        <tr>
            <th>
                Code
            </th>
            <th>
                Status
            </th>
        </tr>

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

        <tr>
            <td>
                <%= Html.Encode(item.ProjectCode) %>
            </td>
            <td>
                <%= Html.Encode(item.ProjectStatus) %>
            </td>
        </tr>

    <% } %>

    </table>

強く型付けされた/動的なパーシャルを強く型付けされたビューまたは動的なビューに表示する方法について少し混乱しています。誰かがこの問題を解決するのを手伝ってくれますか?

4

2 に答える 2

2

はい、できます。ただし、モデルを RenderPartial に渡さない場合は、ビューからモデルが使用されます。したがって、次のようなことを行う必要があります。

Html.RenderPartial("ProjectStatus", new List<ProjectStatus>()); %>
于 2012-10-09T18:34:11.677 に答える
1

パーシャルをレンダリングする場合、コントローラーのアクションはヒットしません。デフォルトでは、パーテントのビューモデルを使用してビューをレンダリングするだけです。

コントローラー アクションを呼び出したい場合ProjectStatusは、RenderActionメソッドが必要です。

<%  Html.RenderAction("ProjectStatus"); %>

ASP.NET MVC で RenderAction と RenderPartial をいつ使用するかについての良い記事

于 2012-10-09T18:34:00.080 に答える