文件上传的控件是<input type="file">,把这个控件的name属性设置成跟后台的类的属性名一样时,好让MVC的模型绑定可以用:
1 @using (Html.BeginForm("Edit", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" })) 2 { 3 @Html.EditorForModel() 4 <div class="editor-label">Image</div> 5 <div class="editor-field"> 6 @if (Model.ImageData == null) 7 { 8 @:None 9 } 10 else 11 { 12 <img width="150" height="150" src="@Url.Action("GetImage","Product",new{Model.ProductID})"/> 13 } 14 <div>Upload new image: <input type="file" name="ImageData"/></div> 15 </div> 16 <input type="submit" value="Save" /> 17 @Html.ActionLink("Cancel and return to List", "Index") 18 }
出现这样的错误
只有将name的值改成其他字符,后台action加一个相应的参数,才能获取提交的图片,为什么会这样,有什么办法可以让上传的图片也可以自动绑定
给你一个思路:
http://www.cnblogs.com/weicong/archive/2012/03/31/2427608.html
你可以用他相同的做法来做.
model上不需要特别修改
以我给你示例,在使用时,只需要:
@Html.EditorFor(x => x.pcontent, "kindeditor")
就可以和model绑定了
其中,kindeditor=kindeditor.cshtml
我想知道,在上面这个上传文件的例子中,MVC Framework 在处理我上传的文件的时候 会出现base-64的错误,如果我将name改一下,后台action用另一个参数接收这个文件,则没问题,所以很奇怪,目前正在研究中......还是很感谢你给的思路!
@白光: 我给你的例子中有一个很完整的图片上传代码哦~
帮你搜索了一下,希望对你有帮助吧
http://stackoverflow.com/questions/3026847/asp-net-mvc-file-upload-error-the-input-is-not-a-valid-base-64-string
跟我遇到的问题差不多,可他们最终还是通过改name的方式解决的。
不明白 “MVC的模型绑定” 什么意思
可以百度下关键字
楼主,问题解决了吗?我也碰到了这个问题,<input type='file' id='xxx' name='xxx' ...>,在后台属性同为'xxx'的模型没有接受到任何Post过来的上传数据。
楼主如果方便的话能够跟我解答一下这个问题吗?jiangwy280@sina.com,万分感谢!