为了提供有关实体的一些背景知识,我有一个 Course 实体和一个 Module 实体,它们具有一对多的关系。这意味着一门课程可以有许多模块。
我希望能够动态添加尽可能多的模块,所以我当然选择了将部分视图添加到编辑页面的方向。
这里涉及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 之间的冲突?