如何将List <Model>从视图传递到Controller

时间:2019-09-17 16:46:49

标签: c# .net asp.net-mvc

我正在尝试将List <>类型的模型类从视图传递到控制器操作方法中。

我无法从mvc中找到已经内置的方法来完成此任务,并且我对ajax / jquery不太熟悉。先前发布的问题很少能真正满足我的需求并且无法满足需求。请帮忙。

我有一个模型类,我能够在视图中填充所有数据,然后用户将对这些数据中的任何一个进行更改,并且将表中显示的整个数据发送到控制器中。

控制器中的方法正在等待Model类的List类型。

found

如何将模型类发送到控制器中的方法中?

我尝试了以下js代码,但根本无法正常工作

这是我的模型班

1

这是我的观点

awk

position

这是我的控制人

public ActionResult Save(List<MyModel> myModel){
   ...
}

我需要将此模型的全部内容作为LIST <>传递到Controller中的Save方法中。

2 个答案:

答案 0 :(得分:2)

由于您使用的是list,因此foreach循环将无法保留和发布模型的值。您将必须使用for的{​​{1}}循环为所有字段创建html元素,并按如下所示更改表格html:

将您的模型类型更改为“列表”,索引器将不适用于IEnumerable

编辑:indexer不会回传该值,需要输入字段。您可以对所有字段使用Html.DisplayFor,以实现代码中所示的效果。

Html.HiddenFor

并使用@model List<MyModel> <table> <tr><th> @Html.DisplayNameFor(model => model.school_id) </th></tr> @for(int i = 0; i < Model.Count; i++) { <tr> <td> @Html.DisplayFor(m=> m[i].school_id) @Html.HiddenFor(m=> m[i].school_id) </td> </tr> } </table> ActionName属性装饰Save方法,操作名称应与视图中表单定义中给出的名称相同:

HttpPost

在按钮[ActionName("Index")] [HttpPost] public ActionResult Save(List<MyModel> myModel){ ... } 上单击它,它将模型发布回Save方法,不需要任何JavaScript。

答案 1 :(得分:0)

端点需要MyModel对象列表,但是您要发送一个MyModel对象。 还要确保在“公共ActionResult保存”顶部添加了[HttpPost]属性

如果由于某种原因无法发送对象列表,则可以创建一个包含MyModel列表的新模型。

您可以尝试删除此行“ var model = @ Html.Raw(Json.Encode(Model))”吗?并通过模型而不是模型?