Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ActionLink参数中将所选项目作为逗号分隔的字符串传递_C#_Asp.net Mvc_Razor - Fatal编程技术网

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

C# 在ActionLink参数中将所选项目作为逗号分隔的字符串传递,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我在Razor中尝试了下面的代码,并尝试在链接(newlink)中将所选项目值(来自Model.NewList)作为参数(逗号分隔的字符串)传递 @使用(Html.BeginForm()) { @ActionLink(“新链接”, “新行动”, “新控制器”, 新的{列=3, locations=String.Join(“,”,Model.NewList .Where(m=>m.Checked==true) .选择(m=>m.Code)) }, 新建{@class=“btn btn succe

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

@使用(Html.BeginForm())
{
@ActionLink(“新链接”,
“新行动”,
“新控制器”,
新的{列=3,
locations=String.Join(“,”,Model.NewList
.Where(m=>m.Checked==true)
.选择(m=>m.Code))
}, 
新建{@class=“btn btn success”})
对于(var i=0;im.NewList[i].Checked)
@Html.HiddenFor(m=>m.NewList[i].Code)
@DisplayFor(m=>m.NewList[i].Name)
}
}

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

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

@Html.ActionLink()
是razor代码。它在发送到视图之前在服务器上解析。如果要发送编辑的值,需要使用javascript动态构建url。但是为什么不发布表单呢?在任何情况下,
NewList
是一个复杂的对象,因此除非查询字符串是
?[0]。code=someValue&[0].Name=someValue&[1].Code=someValue&..看起来您误解了什么是客户端和服务器端。您可能需要在控制器操作中解析模型。新建列表,并在那里准备位置逗号分隔字符串。感谢您的评论,我应该发布数据并从控制器重定向。。
@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>
    }
}