2015-11-13 126 views
0

我處於上傳視圖中的圖像的狀況,該視圖應該在模型的我的組件實體中填充UploadedFile屬性。但是,由於某種原因,該物業從未達到。如果我輸入一個名字,沒有問題。我在這裏錯過了一些細節嗎?ASP MVC綁定失敗實體屬性

public partial class Components 
{ 
    public string Name { get; set; } // This gets set 
    public HttpPostedFileBase UploadedFile { get; set; } // This doesn't gets set 
    public byte[] Image { get { return ConvertToByte(UploadedFile); } set { ; } } 

    public byte[] ConvertToByte(HttpPostedFileBase uploadedFile) 
    { 
     MemoryStream ms = new MemoryStream(); 
     uploadedFile.InputStream.CopyTo(ms); 
     byte[] imageBytes = ms.ToArray(); 

     return imageBytes; 
    } 
} 

查看文件上傳:

@model EmbeddedStock.Models.ComponentViewModel 

    div class="form-group"> 
     <div class="col-md-10"> 
      @Html.LabelFor(model => model.ComponentModel.Image, htmlAttributes: new {@class = "control-label col-md-2"}) 
      <a class="btn" href="javascript:;"> 
       Choose File... 
       <input type="file" name="UploadedFile" Size="40" style="position: absolute; z-index: 2; top: 0; left: 0; filter: alpha(opacity=0); opacity: 0; background-color: transparent; color: transparent" 
         onchange='$("#upload-file-info").html($(this).val());'/> 
      </a> 
      <span class="label label-info" id="upload-file-info"></span> 
     </div> 
    </div> 

的ComponentViewModel:

public class ComponentViewModel 
{ 
    public Components ComponentModel { get; set; } 
} 
+0

嗯,即使我嘗試將名稱更改爲「名稱」或別的東西,看看它是否是特定的屬性,什麼都不會發生。 – Khaine775

+1

哎呀,這應該是'name =「ComponentModel.UploadedFile」' –

+0

這樣做的竅門!不能相信我沒有想到.. – Khaine775

回答

1

至於建議由斯蒂芬·馬克,在視圖中輸入字段改變 '名稱' 做了工作。

<div class="form-group"> 
    <div class="col-md-10"> 
     @Html.LabelFor(model => model.ComponentModel.Image, htmlAttributes: new {@class = "control-label col-md-2"}) 
     <a class="btn" href="javascript:;"> 
      Choose File... 
      <input type="file" name="ComponentModel.UploadedFile" Size="40" style="position: absolute; z-index: 2; top: 0; left: 0; filter: alpha(opacity=0); opacity: 0; background-color: transparent; color: transparent" 
        onchange='$("#upload-file-info").html($(this).val());'/> 
     </a> 
     <span class="label label-info" id="upload-file-info"></span> 
    </div> 
</div> 
+1

作爲另一個建議,使用'@ Html.TextBoxFor(m => m.ComponentModel.UploadedFile,new {type =「file」,size =「40」... 。}) - 當綁定到模型屬性時,總是使用強類型助手來生成你的html –