Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 mvc 2 ASP.NET MVC 2和列表是否作为隐藏值?_Asp.net Mvc 2_Hidden Field - Fatal编程技术网

Asp.net mvc 2 ASP.NET MVC 2和列表是否作为隐藏值?

Asp.net mvc 2 ASP.NET MVC 2和列表是否作为隐藏值?,asp.net-mvc-2,hidden-field,Asp.net Mvc 2,Hidden Field,你好, 我有一个视图类,它包含一个列表,这个列表解释了用户上传的可用文件(用html助手呈现) 为了在提交时维护此数据,我在视图中添加了以下内容: <%: Html.HiddenFor(model => model.ModelView.Files)%> model.ModelView.Files)%%> 我希望mode.ModelView.Files列表会在提交时返回到操作,但不是吗 不能将列表作为hiddenfield吗 更多信息:用户提交保存在服务上的两个文件,保存后这

你好,

我有一个视图类,它包含一个列表,这个列表解释了用户上传的可用文件(用html助手呈现)

为了在提交时维护此数据,我在视图中添加了以下内容:

<%: Html.HiddenFor(model => model.ModelView.Files)%>
model.ModelView.Files)%%>
我希望mode.ModelView.Files列表会在提交时返回到操作,但不是吗

不能将列表作为hiddenfield吗

更多信息:用户提交保存在服务上的两个文件,保存后这些文件被称为GUID,是发送回用户以呈现保存图像的列表。用户在表单中做了一些更改,然后再次点击submit。当进入控件操作时,图像列表将为空,为什么

问候

不能将列表作为hiddenfield吗

当然,这是不可能的。隐藏字段仅接受单个字符串值:

<input type="hidden" id="foo" name="foo" value="foo bar" />

因此,如果您需要一个列表,那么对于列表中的每个项目,您需要多个隐藏字段。如果这些项是复杂对象,则需要为列表中每个项的每个属性设置一个隐藏字段

或者,更简单的解决方案是使用此隐藏字段来表示某个唯一标识符:

<input type="hidden" id="filesId" name="filesId" value="123" />

在控制器操作中,您将使用此唯一标识符从最初获得的位置重新蚀刻您的集合


另一种可能性是将您的模型持久化到
会话中(为了回答的完整性,仅提及该会话,但我并不建议使用它)。

在开始之前,我只想提到,这是一个标记为答案的建议解决方案的示例。Darrin说得对,下面是一个建议解决方案的实施示例

我有一个类似的问题,我需要将int类型的泛型列表存储在hiddenfield中。我尝试了标准方法,即:

<%: Html.HiddenFor(foo => foo.ListOfIntegers) %>
foo.listofInteger)%>
然而,这将导致和例外。因此,我尝试了Darrin的建议,并用以下代码替换了上面的代码:

<%
 foreach(int fooInt in Model.ListOfIntegers)
 { %>
<%: Html.Hidden("ListOfIntegers", fooInt) %>
<% } %>


这对我很有吸引力。谢谢你,达林。

你为什么不推荐这个课程?在操作之间存储数据的建议是什么?我该如何获得uniqe标识符?@SnowJim,数据已经存储在您的数据库中。因此,只需查询数据库以重新提取数据。当然,为了避免在每次请求时命中数据库,您可以使用缓存等。。。我尽量避免使用会话,因为它会导致有状态和可伸缩性较差的应用程序。例如,默认情况下,会话存储在内存中,当您在服务器场中运行时,您需要将其卸载到其他存储(进程外或SAL服务器)。