2012-03-14 8 views
0

私はMVCビューの.aspxページでfileUploadを使いたいです。 コントローラ内のオブジェクトにパスをフェッチします。asp.netのファイルアップロードMVC3.0

<% using (Html.BeginForm("AddClient","Client",FormMethod.Post,new {enctype ="multipart/form-data" })) 
    { %> 
<div class="float-left"> 
<%: Html.Label("BAAFile Path") %> 
<br /> 
<input type="file" name="file" id="file" /> 
<%: Html.ValidationMessageFor(model => model.BAAFilePath) %>--%> 
</div> 
<% } %> 

ページの下部に、詳細を保存するボタンがあります(ファイルアップロードコントロールの横にボタンはありません)。

今、私は自分のコントローラにfileuploadコントロールのパスを取得したいと思います。

[HttpPost] 
    [ButtonName(Name = "Save")] 
    public ActionResult AddClient(ClientService.ClientDto client,HttpPostedFileBase file) 
    { 
     if (file != null && file.ContentLength > 0) 
      { 
       // extract only the fielname 
       var fileName = Path.GetFileName(file.FileName); 

      } 
    } 

今私は "クライアント" である "ClientService.ClientDto" の対象にファイルパス

 var fileName = Path.GetFileName(file.FileName); 

を取得したいです。

 client.BAAFilePath=fileName 

しかし、iamがnullデータを "var fileName"に取得しています。 "のActionResult AddClient(ClientService.ClientDtoクライアント)" に次のコード

if (file != null && file.ContentLength > 0) 
    { 
     // extract only the fielname 
     var fileName = Path.GetFileName(file.FileName); 

    } 

を使用して

IAMは、私は何をしないのですか?

答えて

1

フォームをビューモデルにバインドし、次にビューモデルをDTOにバインドすることをお勧めします。 あなたのビューモデルはHttppostedFileBaseタイプの "File"プロパティを持つ必要があります。フォームを投稿するときは、すべて適切にバインドされます。 フォームにenctype = "multipart/form-data"が含まれていることを確認してください

+0

私のコードを編集しました。追加されたectypeとHttppostedFileBase.still no change.Iamはnullのみを取得しています – Santosh

+0

を見てください。masterpageなしでtake .aspxを実行すると、 asp:マスターページのScriptManager ID = "ScriptManager1" runat = "server"> " – Santosh

+0

"HttppostedFileBase file"からファイルパスを取得するにはどうすればいいですか。filenameを取得しています。フルパスが必要です。 – Santosh

関連する問題