0

同じタイプではない通常のビューに部分ビューを配置しようとしています。割り当てモデルから部分ビューを作成し、それを/ Views/Sharedフォルダーに配置します。次に、別のモデル(InstructorIndexData)に基づく通常のビューで部分ビューを呼び出そうとすると、エラーメッセージが表示されます。

ディクショナリに渡されるモデルアイテムのタイプは「SchoolIn.ViewModels.InstructorIndexData」ですが、このディクショナリにはタイプ「SchoolIn.Models.Assignment」のモデルアイテムが必要です。

部分的なビューからのコードは次のとおりです。

@model ...Models.Assignment
<div class="display-label">Grade</div>
<div class="display-field">
    @Html.DisplayFor(model => model.Grade)
</div>

そして、通常のビューからのコードを次に示します。

@model SchoolIn.ViewModels.InstructorIndexData


<td> @Html.Partial("_UpdateAttendance")</td>

あるタイプの部分ビューを別のタイプの通常のビューに入れるにはどうすればよいですか?助けてくれてありがとう。

4

1 に答える 1

1

メソッドを使用してビューをレンダリングする場合はHtml.Partial、モデルを 2 番目の引数として渡すことができます。

@Html.Partial("_PartialName", item.Grade)

表示/エディタ テンプレートを使用している場合、これは自動的に行われます。

@Html.DisplayFor(x => x.Grade)

Grade プロパティのタイプが であると仮定すると、Assignment~/Views/Shared/DislpayTemplates/Assignment.cshtmlレンダリングされます。

一方、コレクション プロパティがある場合:

public IEnumerable<Assignment> Grades { get; set; }

次に、次を使用できます。

@model SchoolIn.ViewModels.InstructorIndexData
<table>
    <tr>
        @Html.DisplayFor(x => x.Grades)
    </tr>
</table>

これAssignment.cshtmlで、Grades コレクションの各要素に対して表示テンプレートが自動的にレンダリングされるようになり、ビューに醜いループを記述する必要がなくなりました。

于 2012-07-06T07:26:04.963 に答える