Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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
ASP.NET MVC3:将列表中的元素添加到模型中';s系列,来自;编辑";看法_Asp.net_Ajax_Asp.net Mvc 3_Partial Views - Fatal编程技术网

ASP.NET MVC3:将列表中的元素添加到模型中';s系列,来自;编辑";看法

ASP.NET MVC3:将列表中的元素添加到模型中';s系列,来自;编辑";看法,asp.net,ajax,asp.net-mvc-3,partial-views,Asp.net,Ajax,Asp.net Mvc 3,Partial Views,我有一个用户模型,其中包含一组设备。用户可以有任意数量的设备,但每个设备只能有一个用户 我正在为编辑用户制作一个页面。当需要编辑用户的设备集合时,该视图将显示与用户关联的设备表,每个设备旁边都有删除链接,以及当前未与用户关联的设备表,以及添加链接。该视图被键入包含两个列表的viewmodel 这都在局部视图中,因此(理想情况下)它可以使用Ajax动态更新 不幸的是,我对ASP.NET和MVC3以及一般的web开发都很陌生。我应该如何编写视图来实现这一点 关于如何实现这一点,我的大部分假设都基于教

我有一个用户模型,其中包含一组设备。用户可以有任意数量的设备,但每个设备只能有一个用户

我正在为编辑用户制作一个页面。当需要编辑用户的设备集合时,该视图将显示与用户关联的设备表,每个设备旁边都有删除链接,以及当前未与用户关联的设备表,以及添加链接。该视图被键入包含两个列表的viewmodel

这都在局部视图中,因此(理想情况下)它可以使用Ajax动态更新

不幸的是,我对ASP.NET和MVC3以及一般的web开发都很陌生。我应该如何编写视图来实现这一点

关于如何实现这一点,我的大部分假设都基于教程。他正在做类似的事情,但他只是使用@Html.EditorFor并将用户在文本字段中键入的任何内容添加到集合中,而不是选择现有对象。大概我需要将所选设备的ID发送回控制器,以便它可以在列表之间移动设备并返回更新的局部视图。但是视图被输入到viewmodel,并且(除非我弄错了)我不能在post中将任意数据发送回控制器;我只能发送viewmodel。因此,在发回之前,我似乎需要将所选设备的ID放入viewmodel,但如果我这样做,那么我就违反了整个MVC模式,在视图中操作数据


这是一个非常基本的问题,因此我确信有很多解决方案,但不幸的是,我缺乏足够的领域知识,甚至不知道如何查找解决方案。

您可以向控制器发送额外的数据(不仅仅是视图模型),例如,对于设备列表,您可以为每个项目创建复选框,每个复选框必须具有相同的名称和不同的值,如下所示:

<input type="checkbox" name="devices" value="dev1" />
<input type="checkbox" name="devices" value="dev2" />
<input type="checkbox" name="devices" value="dev3" />
参数devices包含用户提交表单时选择的设备ID列表(假设复选框位于表单内,用户提交表单)

这是一种方法,当然还有其他方法

public ActionResult UpdateUser(User usermodel,string[] devices){ ... }