Uploadify - MVC3:如何传回表单集合数据?

时间:2012-04-10 23:19:26

标签: asp.net-mvc asp.net-mvc-3 uploadify

我有一个使用uploadify的视图中显示的视图模型。我需要在帖子中传回收集数据。我怎么能这样做?

视图模型:

public class ViewModel
{
   string Name;
   IEnumerable<Junk> theJunk;
}

public Junk
{
   int id;
   string Name;
}

查看:

@model ViewModel

@using (@Html.BeginForm())
{
  <input type="file" name="dr405" id="dr405" />

    <div>
        @Html.LabelFor(model => model.Name)
        @Html.EditorFor(model => model.Name)
    </div>        
    @Html.EditorFor(model => model.theJunk)

    <input type="submit" value="Upload Junk" /> 
}

<script type="text/javascript">
    jQuery.noConflict();
    jQuery(document).ready(function () {
        jQuery("#dr405").uploadify({
            'uploader': '@Url.Content("~/Scripts/uploadify.swf")',
            'cancelImg': '/Content/themes/base/images/cancel.png',
            'buttonText': 'Browse Files',
            'script': 'home/upload',
            'folder': '/uploads',
            'fileDesc': 'Image Files',
            'fileExt': '*.jpg;*.jpeg;*.gif;*.png',
            'sizeLimit': '38000',
            'multi': true,
            'auto': true,
        });
    }); 
    </script> 

控制器:

   [HttpPost]
    public ActionResult Upload(HttpPostedFileBase fileData, FormCollection collection)
    {
        // Get my view model here
        // ...get the main Name!
        // ...get the collection of Junk 

        return "ok";
    }

1 个答案:

答案 0 :(得分:3)

这是涵盖此方案的article。您可以使用scriptData参数,该参数允许您将其他值传递给服务器。但是由于uploadify会为每个文件发送多个请求(假设您已将multi选项设置为true),您可以执行2个控制器操作:第一个将针对每个选定的文件进行操作,以便将其保存在某处,第二个一旦所有文件上传并发送表单数据,一个将会很热。如果您不希望在选择文件后立即启动上传,则还应将auto选项设置为false。