如何通过ActionLink将项目发送到ASP.NET MVC控制器?

时间:2017-12-30 07:39:01

标签: c# asp.net razor model-view-controller

这里我在表格中有一些行,并列出了我的产品的标志,在这种情况下称为项目。当我想将标志编辑为开启或关闭时(是/否),我需要访问整个项目本身,因为我无法识别我点击的项目标记。

@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);
    }

我尝试过搜索,但也许我只是没有搜索正确的关键字。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

@Html.ActionLink("Edit", "FlagEdit", new { flagId = flag.Id, itemId = item.Id }, null)