エンティティの背景を説明するために、1 対多の関係を持つ Course エンティティと Module エンティティがあります。これは、コースに多くのモジュールを含めることができることを意味します。
できるだけ多くのモジュールを動的に追加できるようにしたかったので、もちろん編集ページに部分ビューを追加する方向に進みました。
ここでは 2 つのビューが関係しています。
- モジュール - コースに関連するすべてのモジュールを表示する単なる編集ページである、コース コントローラー内の厳密に型指定されたビュー
- _Add - モジュールの作成ページである、モジュール コントローラー内の厳密に型指定された部分ビュー
ビュー Modules で、次の行を追加して、部分的にレンダリングされるかどうかをテストします。
@Html.Partial("~/Views/Module/_Add")
ただし、常に次のエラーが表示されます: The name 'model' does not exist in the current context
以下のように、他のソースの読み取りからモデルを渡そうとしました。
@Html.Partial("~/Views/Module/_Add", Model)
@Html.Partial("~/Views/Module/_Add", model)
@Html.Partial("~/Views/Module/_Add", new RocketLabs.Models.Module())
しかし、どれも機能しません。何か案は?アドバイスやコメントをいただければ幸いです。ありがとう!
更新 2 - 完全なコード
モジュール ビュー (親) コード:
@model RocketLabs.Models.Course
@{
ViewBag.Title = "Modules";
}
<h2>@Html.DisplayFor(model => model.Name)</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<div class="row-fluid">
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Course Modules</legend>
<div class="row-fluid">
<div class="span4">
@Html.DisplayFor(model => model.Description)
</div>
<div class="span4">
@Html.HiddenFor(Model => model.Id)
@Html.HiddenFor(model => model.Name)
@Html.HiddenFor(model => model.Description)
@Html.HiddenFor(model => model.Author)
@Html.HiddenFor(model => model.CreateDate)
@Html.HiddenFor(model => model.IsDeleted)
@Html.HiddenFor(model => model.IndustryId)
</div>
<div class="span4 pull-right">
<div class="control-group">
<div class="controls">
<input type="submit" role="button" class="btn btn-primary btn-medium" value="Save Course" />
<a href="@Url.Action("Index", "Course")" role="button" class="btn btn-primary btn-medium">Back to Courses</a>
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span2">
<a href="#" role="button" class="btn btn-success btn-medium"><i class="icon-plus icon-white"></i> Add Module</a>
</div>
<div class="row-fluid">
<div class="span12">
@*@{ Html.RenderPartial("~/Views/Module/_Add", Model); }*@
@*@Html.Partial("~/Views/Module/_Add", Model)*@
@*@Html.Partial("~/Views/Module/_Add", model)*@
@*@Html.Partial("~/Views/Module/_Add", new RocketLabs.Models.Module())*@
</div>
</div>
</div>
</fieldset>
}
</div>
_部分ページコードを追加:
@model RocketLabs.Models.Module
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Module</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
...
子パーシャルの @model と親ビューの @model の間の競合でしょうか?