C# 在ActionLink参数中将所选项目作为逗号分隔的字符串传递
我在Razor中尝试了下面的代码,并尝试在链接(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
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> } }