2011-07-09 1 views
3

私は、ビューモデルパラメータに加えてPOSTアクションメソッドにパラメータを使用する必要はありません。ただし、Telerik Uploadヘルパーを使用してファイルをアップロードする場合、これを強制するようです。転記された値はIEnumerable<HttpPostedFileBase>です。カスタムモデルバインドの手間をかけずにモデルにバインドする方法はありますか?MVC3モデルバインディングにTelerikファイルのアップロードを含めるにはどうすればよいですか?

答えて

2

私は私のビューモデルパラメータに加え で私の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 
      } 
     } 
    } 
    ... 
} 
+0

おかげ@Darin。私はビューモデルを使用していたと言っていますが、モデルのバインディングについてアップロードが丁寧であれば、ビューモデルのFilesプロパティがnullになっているはずです。 – ProfK

+0

@ProfK、はい、間違ったことをしている可能性があります。残念ながら、あなたが何をしているのかわからないので、私があなたをさらに助けることはできません。 –

+0

私の大事なおっぱい。私は私のビューモデルではプライベートとしてファイルプロパティを持っていた。 – ProfK

0

は、コントロールの名前(。(アップロード)名(***))は、モデルのプロパティと同じでなければならないことを覚えておいてください。

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) 
関連する問題