在ActionLink参数中以逗号分隔的字符串形式传递所选项目

本文关键字:项目 选项 字符串 参数 ActionLink 分隔 | 更新日期: 2023-09-27 18:26:26

我在Razor中尝试了下面的代码,并试图将所选项目值(来自Model.NewList)作为参数(逗号分隔的字符串)传递到链接(New Link)中

@using (Html.BeginForm())
{
    @Html.ActionLink("New Link", 
                        "NewAction", 
                        "NewController", 
                        new { columns = 3,
                              locations = String.Join(",", Model.NewList
                                            .Where(m => m.Checked == true)
                                            .Select(m => m.Code))
                        }, 
                        new { @class = "btn btn-success" })
    for (var i = 0; i < Model.NewList.Count(); i++)
    {
        <table>
            <tr>
                <td>
                    @Html.CheckBoxFor(m => m.NewList[i].Checked)
                </td>
                <td>
                    @Html.HiddenFor(m => m.NewList[i].Code)
                    @Html.DisplayFor(m => m.NewList[i].Name)
                </td>
            </tr>
        </table>
    }
}

这样做的问题是,当它在页面加载时运行时,当没有选择项目时,它不会拾取用户(.Where(m => m.Checked == true)选择的项目。当用户选择项目并在单击操作链接时选择所选项目时,如何更新模型?

在ActionLink参数中以逗号分隔的字符串形式传递所选项目

您需要从表单中检索数据,而不是从最初传递给视图的模型(model.xxxx)中检索数据。我将使用表单提交的数据,方法是将ActionLink更改为submit按钮,并将表单操作指向所需的操作和控制器。您将收到的表单集合将包含选中的值。