2011-06-08 78 views
0

我有上傳我的文件的問題。我想從我的編輯視圖上傳:ASP.NET MVC2 +文件上傳(HttpPostedFileBase類)

<% 
    using (Html.BeginForm("edit","profile",FormMethod.Post, new { enctype="multipart/form-data" })) 
    {%> 
    <%: Html.ValidationSummary(true) %> 

    <%: ViewData["ErrorMessage"] %> 
    <fieldset> 
     <legend>Fields</legend> 

     <div class="editor-label"> 
      <%: Html.LabelFor(model => model.Image) %> 
     </div> 
     <div class="editor-field"> 
      <input type="file" id="Image" name="Image" /> 
      <label id="LabelErrorImage" class="errorMessage" /> 
     </div> 

     <p> 
      <input type="submit" value="Save" onclick="return Validate(); return false;"/> 
     </p> 
    </fieldset> 

<% } %> 

我想用HttpPostedFileBase類。我的編輯動作:

[Authorize] 
     [HttpPost] 
     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Edit(string id, HttpPostedFileBase file, FormCollection formValues) 
     { 
        if (ModelState.IsValid) 
        { 

         if (file != null && file.ContentLength > 0) 
         { 
          CustomHelpers.createFolder(); 
          var tmpPath = MyConfig.UPLOAD_FILE_PATH + "/" + Membership.GetUser().ProviderUserKey.ToString(); 
          var path = Path.Combine(Server.MapPath(MyConfig.UPLOAD_FILE_PATH), "Avatar"); 
          var fileExtension = Path.GetExtension(file.FileName); 
          file.SaveAs(path); 
          user.Image = "Avatar"; 
         } 
         adventureDB.SaveChanges(); 

         return RedirectToAction("Index"); 
        } 
     } 

但我始終有空文件對象,爲什麼?????你有什麼想法,建議爲什麼它可以這樣工作?也許有問題,我如何將文件值傳遞給我的編輯操作?


編輯: IT真的很奇怪,因爲即使當我刪除
using (Html.BeginForm("Index","Profile",FormMethod.Get, new { enctype="multipart/form-data" }))

頁面的源代碼仍然有:

<body> 

    <form method="post" action="6111e591-b92d-4bcb-b214-ab8f664b35f9" id="form1"> 

我的意思是我無法改變的標記,但不知道爲什麼:/

回答

1

嘗試更改: -

public ActionResult Edit(string id, HttpPostedFileBase file, 
    FormCollection formValues) 

到: -

public ActionResult Edit(string id, HttpPostedFileBase image, 
    FormCollection formValues) 

作爲輸入的名稱是image

<input type="file" id="Image" name="Image" /> 

編輯 說實話別的東西停止圖像的結合。這是你發佈的整個表單嗎?

有幾件事情來測試

  1. 你有HTTPOST裝飾你的方法兩次,但我不認爲這應該有所作爲。
  2. 查看源文件並確保源文件中沒有其他名稱爲name=image
  3. 確保您清空緩存並確保來源是正確的再次
  4. 測試嘗試使用<form action="/profile/index" method="post" enctype="multipart/form-data">
  5. 由上次編輯來看你與母版頁/佈局問題之前?這是一個mvc/webforms混合?
+0

是的,我已經改變它,但它仍然爲空:/ – canimbenim 2011-06-08 16:57:23

+0

不,它不是所有的代碼,因爲它是很長的,但我注意到,我在我的視圖中寫什麼並不重要,因爲它總是重定向到功能相同。也許是因爲我使用Master站點,它使用了我不知道的機制? – canimbenim 2011-06-08 18:57:41

+0

進一步更我有在源代碼2點的形式:<形式方法= 「POST」 行動= 「6111e591-b92d-4bcb-B214-ab8f664b35f9」 ID = 「form1中」>

,然後我在寫的第二查看:
canimbenim 2011-06-08 19:02:31

0

那麼,在您的視圖中,您命名文件輸入'圖像',但您的操作方法接受一個名爲'文件'的參數。重命名其中一個,它應該工作。

+0

是的,但我現在改變了它,仍然是相同的:/ – canimbenim 2011-06-08 17:01:55

1

時,這個問題的解決方案:

  1. 我們用法師。網站,
  2. 我們要上傳文件的視圖,
  3. 我們相信,它應該工作,但是我們所有的時間都有空,

然後:

  1. 傢伙是正確的 - 在我看來,我的名字錯了 - 檢查它!
  2. 檢查你的視圖的源代碼,如果你有2 <窗體>標籤,你應該從主站點刪除<窗體>標籤,然後第二個被忽略!

現在它應該工作。