另一个nerddinner noob在这里。我通过示例nerddinner项目完成了它,并开始创建一个我需要的新类似的东西。
所以,我的index.cshtml看起来像这样:
@model PagedList.IPagedList<ProjectSender.Models.Incident>
...
@foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink(item.Title, "Details", new { id = item.IncidentId })
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.Partial("_ReserveStatusList", item)
</td>
</tr>
}
我的部分视图如下:
@model PagedList.IPagedList<ProjectSender.Models.Incident>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
<script type="text/javascript">
function AnimateProjectMessage() {
$("#projectmsg").animate({ fontSize: "1.5em" }, 400);
}
</script>
<div id="projectmsg">
@Ajax.ActionLink("Reserve this Project",
"Reserve", "Projects",
new { id = item.IncidentId },
new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "projectmsg", OnSuccess = "AnimateProjectMessage" })
</div>
如果我替换部分视图并只使用Ajax.ActionLink
中的index.cshtml
,则可以正常使用。但是,如果我在局部视图中使用它,对于item (in item.IncidentId)
我得到&#34;当前上下文中不存在名称项。&#34; 但是,没有VS中的红色波浪形我在浏览器中收到此错误。
如果您将此与nerddinner进行比较,我基本上会尝试在晚餐列表中删除每份晚餐的RSVP选项。 RSVP局部视图通常位于“详细信息”页面上。
为了完整,编辑。这是我要求的控制器代码,以防有人在将来查看此内容:
public ActionResult Index(string searchString, int? page)
{
int pageSize = 10;
int pageNumber = (page ?? 1);
IQueryable<Incident> incidents = null;
incidents = incidentRepository.FindRecentIncidents(searchString);
return View(incidents.ToPagedList(pageNumber, pageSize));
}
最终,在从MVC3 / EF4升级到MVC4 / EF4并将局部视图恢复为原始的nerddinner代码(如接受的答案中所建议的)之后,一切都还可以。
答案 0 :(得分:0)
请注意,部分内容未定义item
。部分视图将其作为模型接收(将您的部分模型修复为单个Incident
btw - 您没有在其中传递列表),因此您需要使用Model
来引用转而通过的项目:
@model ProjectSender.Models.Incident
...
@Ajax.ActionLink("Reserve this Project",
"Reserve", "Projects",
new { id = Model.IncidentId },