我正在尝试将List <>类型的模型类从视图传递到控制器操作方法中。
我无法从mvc中找到已经内置的方法来完成此任务,并且我对ajax / jquery不太熟悉。先前发布的问题很少能真正满足我的需求并且无法满足需求。请帮忙。
我有一个模型类,我能够在视图中填充所有数据,然后用户将对这些数据中的任何一个进行更改,并且将表中显示的整个数据发送到控制器中。
控制器中的方法正在等待Model类的List类型。
found
如何将模型类发送到控制器中的方法中?
我尝试了以下js代码,但根本无法正常工作
这是我的模型班
1
这是我的观点
awk
position
这是我的控制人
public ActionResult Save(List<MyModel> myModel){
...
}
我需要将此模型的全部内容作为LIST <>传递到Controller中的Save方法中。
答案 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))”吗?并通过模型而不是模型?