K ......我做的事情显然是错的.我有一个带有文件输入控件的简单页面和一个提交按钮.我正在尝试用Mvc RC发布的新"File"ActionResult ......
所有,我想要发生的是当点击提交按钮时,所选文件被上传到数据库.这一切都很好......
然后,在页面刷新后,我想要一个图像来显示上传的结果图像.问题是图像没有渲染......我得到了破碎的图像......
这是获取文件并将其发送回视图的部分...
var a = Helper.Service.GetAttachmentById(id, MembershipProvider.SecurityTicket);
if (a == null)
{
return View(new ImagePlaceHolderViewData(new { Id = id }));
}
return View(new ImagePlaceHolderViewData(new { Id = a.Id, Image = a, FileContent = File(a.Data, a.ContentType) }));
Run Code Online (Sandbox Code Playgroud)
然后在视图中我有一个像这样的图像标签...
<img src="<%=Model.FileContent.FileContents %>" />
Run Code Online (Sandbox Code Playgroud)
我也试过......
<img src="<%=Model.FileContent%>" />
Run Code Online (Sandbox Code Playgroud)
思考..?
FileResult返回文件的ASCII或二进制内容.当你说做以下事情时:
<img src="<%=Model.FileContent.FileContents %>" />
Run Code Online (Sandbox Code Playgroud)
您正在尝试将二进制图像数据推送到src
属性中.这将永远不会起作用,因为src
必须是URL或图像的路径.
有几种方法可以做你想要的,在这种情况下最正确的解决方案是创建一个新的控制器来返回你正在尝试的二进制数据,然后将src
属性设置为正确操作的路径你的新控制器.例如:
<img src="/image/result/12345" />
Run Code Online (Sandbox Code Playgroud)
这指向以下(非常简单和不完整)示例控制器:
public class ImageController : Controller
{
public ActionResult Result(int resultID)
{
// Do stuff here...
return File(..);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我为该操作选择的名称很可能没有任何好处,但它可以作为一个例子.希望这有用.
归档时间: |
|
查看次数: |
2008 次 |
最近记录: |