我有一种情况,我希望在像这样的视图中的foreach中使用html.action。
<div class="row">
@foreach (var item in Model.Sections)
{
<div class="col-md-8 col-lg-offset-2">
<div>
@Html.DisplayFor(modelItem => item.Name)
@Html.Action("Edit", "Section", new { id = item.SectionId })
</div>
</div>
}
</div>
但是,如果我运行这个,我会在等待异步操作完成时阻止&#34; httpserverutility.execute&#34;错误。我的所有控制器动作都是异步的,所以我认为我做了一些不允许的事情。
答案 0 :(得分:1)
这实际上取决于你想要完成什么(即你想显示Action的结果吗?你想要一个指向它的链接吗?等等)
渲染动作
如果要渲染已定义操作的结果,则应考虑使用Html.RenderAction()
方法:
@Html.DisplayFor(modelItem => item.Name)
@Html.RenderAction("Edit", "Section", new { id = item.SectionId })
提供链接
如果您想呈现指向特定操作的链接(在此方案中似乎更有可能),您应该考虑使用Html.ActionLink()
方法:
@Html.DisplayFor(modelItem => item.Name)
@Html.Action("Edit", "Edit", "Section", new { id = item.SectionId }, null)
答案 1 :(得分:0)
我相信您可能正在尝试从视图中呈现异步部分视图。这是我研究中一个颇具争议的问题。在ASP.NET问题上是Issue 601。我相信它已在较新版本的ASP.NET MVC中得到解决。请参阅ASP.NET MVC文档here,看看它是否解决了您的问题。
答案 2 :(得分:-1)
这可以帮到你,
foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.PGId)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.PGId})
</td>
</tr>
}