从同一视图发布文件上载后,在视图上保留表单数据

时间:2011-04-06 13:46:21

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

我可以编辑一些文档详细信息并上传两个相关图像。我希望此视图在我的控制器上发布两个不同的操作,一个用于保存所有表单字段,另一个用于执行文件上载。 我在主窗体周围有一个表单,在文件uplaod输入周围有一个多部分表单

   <% using (Html.BeginForm("Edit", "Document", FormMethod.Post,
                                 new { enctype = "multipart/form-data" })) { %>

    <% =Html.TextBoxFor(model => model.Document.Title) %>
     <%= Html.TextBoxFor(model => model.Document.Description) %>

    //and then another multipart form around the file upload part like this
     <% using(Html.BeginForm("FileUpload", "Document", FormMethod.Post, new { enctype = "multipart/form-data" }))
                <input type="file" id="fileUpload" name="iamge" size="30" />
                <input type="submit" value="Upload" />
                  <% { %>  

<input type="submit" value="Save" />
<% } %>

文件上传在发布内部表单时正确发生,但我希望控制器再次将强制模型返回到主视图,并保留所有表单字段。视图是强类型的,所以我想我会使用内部表单将整个模型发布到文件上传操作。我是否可以使用一个多部分表单来发布文件和表单数据,无论点击什么输入元素?这是好习惯吗?在一天结束时,我想要的是确保在上传文件后,我的所有表单数据都保存在编辑表单上。

如何将模型数据从内部表单传递给文件上载操作?

1 个答案:

答案 0 :(得分:1)

你不需要我不思考的内在形式。您可以只使用外部表单,如果设置了操作参数,则应在模型中进行解析。然后,您可以使用不同的逻辑路径,例如,根据是否已发布任何文件来保留其他模型元素。

然后,您就可以将已回发的模型传递回视图。