如何在MVC3模型绑定中包含Telerik文件上载?

时间:2011-07-09 15:46:13

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

除了我的视图模型参数之外,我不想让我的POST操作方法使用参数。但是,对于使用Telerik上传助手进行文件上传,似乎我不得不这样做。发布的值为IEnumerable<HttpPostedFileBase>。有没有办法我可以将它绑定到模型而无需自定义模型绑定。

2 个答案:

答案 0 :(得分:4)

  

我不喜欢使用参数   另外,我的POST动作方法   到我的视图模型参数。

我也不是。这就是我使用视图模型的原因:

public class MyViewModel
{
    public IEnumerable<HttpPostedFileBase> Files { get; set; }
    public string Foo { get; set; }
    public string Bar { get; set; }
    ...
}

然后:

[HttpPost]
public ActionResult Upload(MyViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    if (model.Files != null)
    {
        foreach (var file in model.Files)
        {
            if (file != null && file.ContentLength > 0)
            {
                // process the uploaded file
            }
        }
    }
    ...
}

答案 1 :(得分:1)

请记住,控件的名称(Upload()。Name(***))应该与model的属性相同。

public class MyViewModel
{
    public IEnumerable<HttpPostedFileBase> ManyFiles { get; set; }
    ...
}
// ...
@Html.Kendo().Upload().Name("ManyFiles")

public class MyViewModel
{
    public HttpPostedFileBase OneFile { get; set; }
    ...
}
// ...
@Html.Kendo().Upload().Name("OneFile").Multiple(false)