带有动态模型的MVC Multiple FileUpload

时间:2013-05-20 12:31:41

标签: asp.net-mvc vb.net file-upload

我担心我对MVC来说是全新的,而且几乎就像编程新手一样。

我一直在使用MVC进行问卷调查。登录后,每个用户都会获得一个由数据库中的某些数据生成的特定问卷。视图绑定到包含大量信息和问题列表的模型。问题由编辑器模板处理,该模板由许多与问题相关的信息组成,例如ID,名称,响应或类型。这些问题中的一个或多个可能涉及执行一个或多个文件的文件上载。

我在stackoverflow上找到了这个:MVC3, multiple file upload, model binding看起来很有希望,但由于文件上传问题的数量可能会有所不同,我不知道如何将上传的文件与问题ID相匹配。这里的方法似乎涉及使用上传中的名称来匹配它们,但由于我不知道会有多少上传问题,每个都将在页面上动态生成和命名。

如果通过在问题中添加HttpPostedFileBase属性,每个问题只允许上传一个文件,我设法让它工作,但我不能说明如何允许任意数量的上传。

总结:有没有办法拥有0+文件上传实例,每个实例能够上传1个或多个文件,并且能够告诉哪些文件属于哪个上传问题?

另外,如果我想使用AJAX提交调查问卷,我是否必须使用单独的jquery插件(我已经看过几个提到的)并单独处理文件上传?

道歉如果上述内容没有意义,我对整个事情感到非常困惑。我没有包含任何代码,因为我所拥有的一切都很复杂而且很长:(

非常感谢。

1 个答案:

答案 0 :(得分:0)

我最近完成了一个非常相似的项目。我使用了Fine File Uploader for JQuery。这照顾了上传的机制本身。但我想你问的是如何将文件与上传后的问题相关联。

如果我正确理解了您的问题,您可以通过为每个问题(我假设您已经拥有)分配ID,然后将每个上传文件与其问题ID关联到会话变量中来动态完成所有这些操作。此变量应该是一个适当的数据结构,如列表。例如,每个列表项可以是UploadedQuestionFile类型的对象(由您定义),包含2个字段:QuestionID和FilePath。当然,我正在简化这个场景,以便明确一点。

对于第二个问题,是的,您应该使用控制器中定义的上传功能处理单独上传的每个文件。此函数应读入请求中的问题ID和文件,并在会话变量中将它们关联在一起。每个文件都是单独处理的,因为它们一次上传一个。

这应该可以轻松满足您的要求。如果您需要进一步解释,请告诉我。