Asp.net mvc 3 在MVC3Razor中显示上载的图像
这个新手在显示上传到服务器的图像时出错了: 型号:Asp.net mvc 3 在MVC3Razor中显示上载的图像,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,这个新手在显示上传到服务器的图像时出错了: 型号: public class Person { public int ID { get; set; } public string Name { get; set; } public string ImageUrl { get; set; } } 控制器(上传-由[HttpPost]公共操作结果创建调用): 创建视图: ... @using (Html.BeginForm("Create", "Person", Fo
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public string ImageUrl { get; set; }
}
控制器(上传-由[HttpPost]公共操作结果创建调用):
创建视图:
...
@using (Html.BeginForm("Create", "Person", FormMethod.Post, new { @encType = "multipart/form-data" }))
{
...
@FileUpload.GetHtml(initialNumberOfFiles: 1, allowMoreFilesToBeAdded: false, includeFormTag: false, uploadText: "image")
...
<div>
<input type="submit" value="Create" /> |
@Html.ActionLink("Back", "Index")
</div>
}
视图中的调用:
@Html.MyImage(Model.ImageUrl)
生成的代码是
<img alt="[IMAGE]" src="/App_Data/Uploads/Fotos/_nofoto.jpg" />
但结果是一样的:没有图像:(
---已解决---
显然,App_数据不是保存上传文件的好位置,因为访问它们将导致错误403-禁止。我将文件移动到~/Uploads/Fotos,它就工作了。这不是有效的HTTP路径。这是您计算机上文件夹的路径 请尝试
UrlHelper.GenerateContentUrl()
方法
img标记有一个硬盘url,而不是http…另一个尝试:
@{var imgPath=UrlHelper.GenerateContentUrl(Model.ImageUrl,this.ViewContext.HttpContext);}
相同的结果:[IMAGE]
<img src="D:\Users\x\Documents\Visual Studio 2010\Projects\CMI_AD\CMI_AD\App_Data\Uploads\Fotos\_nofoto.jpg" alt="IMAGE" />
public static class MyHelpers
{
public static IHtmlString MyImage(this HtmlHelper htmlHelper, string url)
{
var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
var img = new TagBuilder("img");
img.Attributes["alt"] = "[IMAGE]";
img.Attributes["src"] = UrlHelper.GenerateContentUrl(url, htmlHelper.ViewContext.HttpContext);
return MvcHtmlString.Create(img.ToString(TagRenderMode.SelfClosing));
}
}
@Html.MyImage(Model.ImageUrl)
<img alt="[IMAGE]" src="/App_Data/Uploads/Fotos/_nofoto.jpg" />