如何在Html.actionLink的参数中传递IEnumerable Model

||                                                                                                                       
已邀请:
您不能像这样通过GET请求传递整个模型。您可以使用HTML表单:
@using (Html.BeginForm(\"Save\", \"SomeController\"))
{
    @Html.EditorForModel()
    <input type=\"submit\" value=\"Save It\">
}
您已为此模型(
~/Views/Shared/EditorTemplates/Item.cshtml
)定义了一个使用隐藏字段的编辑器模板:
@model Item
@Html.HiddenFor(x => x.ID)
@Html.HiddenFor(x => x.Name)
此部分的名称和位置很重要。如果Item是模型集合的类型名称,即
IEnumerable<Item>
,则它应位于
~/Views/Shared/EditorTemplates
中,文件名应称为
Item.cshtml
。将针对集合的每个项目执行编辑器模板,并渲染相应的隐藏字段,以将其传输到服务器。 此表单将成功将项目集合发送到以下控制器操作:
[HttpPost]
public ActionResult(IEnumerable<Item> model)
{
    ...
}
这是另一种进行方法。如果不应该让用户修改视图上的模型值,则可以简单地使用一些唯一的标识符,使您可以从最初获取模型的地方重新获取模型。因此,例如:
public ActionResult Index(int id)
{
    IEnumerable<Item> model = ... fetch the model using the id
    return View(model);
}
并在视图中生成一个传递此ID的链接:
@Html.ActionLink(\"Save It\", Save, new { id = \"123\" })
    

要回复问题请先登录注册