在ActionLink参数中将所选项目作为逗号分隔的字符串传递

时间:2015-12-11 05:45:47

标签: c# asp.net-mvc razor

我在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)选择的项目,因为它在页面加载时运行。如何在用户选择项目时更新模型,并在点击操作链接时选择所选项目?

1 个答案:

答案 0 :(得分:0)

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