Чтобы дать некоторую информацию о сущностях, у меня есть сущность Курса и сущность Модуля с отношением один ко многим. Это означает, что курс может иметь много модулей.
Я хотел иметь возможность динамически добавлять как можно больше модулей, поэтому я, конечно же, выбрал направление добавления частичных представлений на страницу редактирования.
Здесь рассматриваются 2 точки зрения:
- Модули — строго типизированное представление в контроллере курса, которое представляет собой просто страницу редактирования, отображающую все модули, связанные с курсом.
- _Add — строго типизированное частичное представление в контроллере модуля, которое является страницей создания модулей.
В модулях представления я добавляю эту строку, чтобы проверить, отображается ли частичный рендеринг:
@Html.Partial("~/Views/Module/_Add")
Однако я всегда получаю эту ошибку: Имя «модель» не существует в текущем контексте
Я попытался передать модель из чтения других источников со следующим ниже:
@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 в родительском представлении?
_Add
частичного! - person nemesv   schedule 09.03.2013model
, который не определен в коде. В фрагментах, которые вы разместили здесь, нет ничего, что делало бы очевидным, где ошибка. Однако имя свойства модели в представлении —Model
с заглавной M, поэтому, возможно, вам нужно найти, где вы ссылаетесь на это свойство, используя неправильную заглавную букву. Сообщение об ошибке, которое вы получаете от ASP.NET, должно помочь вам точно определить, где ошибка. - person Martin Liversage   schedule 09.03.2013_Add
частичную... - person nemesv   schedule 09.03.2013