我熟悉C#/ .net,但是.net mvc和razor的东西很新, 我想要做的是,我想从视图中调用控制器中的方法,将字符串路径呈现为二进制, 所以我在视图中这样做:
<img src="@Url.Action("ReadFile", "FLK", new { path = Model.Pict })" />
这在控制器中:
public void ReadFile(string path)
{
Response.ContentType = "image";
Response.BinaryWrite(System.IO.File.ReadAllBytes(path));
}
但是当我在控制器中放置一个调试点时,我的调试点从来没有任何线索,任何线索?需要一些建议,谢谢。
答案 0 :(得分:2)
控制器中的ReadFile()
方法应该是这样的 -
public ActionResult ReadFile(string path)
{
byte[] imgBytes = System.IO.File.ReadAllBytes(path);
return File(imgBytes, "image/png");
}
这里,您的action方法将图像文件读入字节数组,然后使用ActionResult基类的File()方法将内容发送给调用者。
所以你可以在你的视图中使用它 -
<img src='@Url.Action("ReadFile", new { path = Model.Pict }))'/>
答案 1 :(得分:0)
您的控制器方法应如下所示。
[HttpGet]
public ActionResult ReadFile(string path)
{
return new FileContentResult(System.IO.File.ReadAllBytes(Server.MapPath(path)), "image");
}
视图中的代码没问题。但要确保图像的路径类似于“〜\ Images \ Test.png”;现在控制器中的断点将被击中。在客户端浏览器中加载页面时会触发它。
答案 2 :(得分:0)
public FileContentResult getImage(int id)
{
byte[] imgBytes = System.IO.File.ReadAllBytes(path);
if (imgBytes!= null)
{
return new FileContentResult(imgBytes, "image/jpeg");
}
else
{
return null;
}
}
On Razor
<img src="@Html.Action("ReadFile", "FLK", new { path = Model.Pict })" />