【发布时间】:2017-12-30 07:39:01
【问题描述】:
在这里,我在表格中有一些行,并列出了我的产品的标志,在这种情况下称为项目。当我想将标志编辑为打开或关闭(是/否)时,我需要访问整个项目本身,因为我没有其他方法可以识别我点击了哪个项目的标志。
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
<ul>
@foreach (var flag in item.Flags)
{
<li>
@Html.DisplayFor(modelItem => flag.Name) |
@(flag.Enabled ? "Yes" : "No") |
@Html.ActionLink("Edit", "FlagEdit", new { flagId = flag.Id, itemId = item.Id })
</li>
}
</ul>
</td>
如果不清楚,请询问,我会详细说明。我正在尝试发送 itemId,但因为我在 foreach 的标志内,所以我无法掌握它。
当我到达第一个如果检查参数不为空时,检查失败。
[ActionName("FlagEdit")]
public async Task<ActionResult> EditFlagAsync(string flagId, string itemId)
{
if (flagId == null || itemId == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = await DocDBRepo<Item>.GetItem(itemId);
if (item == null)
{
return HttpNotFound();
}
//do update
return View(item);
}
我已经尝试过搜索,但也许我只是没有搜索正确的关键字。有人可以帮忙吗?
【问题讨论】:
-
您的问题到底是什么? itemId 没有达到控制方法?您的 ActionLink 看起来不错
-
已更新控制器及其失败的确切位置。 flagId 不为空,所以我知道 actionLink 没问题,我只是无法从外部 foreach 发送我的项目
标签: c# asp.net razor model-view-controller