2015-11-13 174 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 –