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