Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从MVC视图调用方法无效_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 从MVC视图调用方法无效

C# 从MVC视图调用方法无效,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我熟悉C#/.net,但对.net mvc和razor之类的东西很陌生, 我想做的是,我想从视图中调用控制器中的一个方法,以将字符串路径呈现为二进制, 因此,我在视图中这样做: <img src="@Url.Action("ReadFile", "FLK", new { path = Model.Pict })" /> <img src='@Url.Action("ReadFile", new { path = Model.Pict }))'/> 但当我在控制器中放

我熟悉C#/.net,但对.net mvc和razor之类的东西很陌生, 我想做的是,我想从视图中调用控制器中的一个方法,以将字符串路径呈现为二进制, 因此,我在视图中这样做:

<img src="@Url.Action("ReadFile", "FLK",  new { path = Model.Pict })" />
<img src='@Url.Action("ReadFile", new { path = Model.Pict }))'/>

但当我在控制器中放置调试点时,我的调试点从未触发,有什么线索吗?需要一些建议,谢谢。

您的控制器方法应该如下所示

[HttpGet]
public ActionResult ReadFile(string path)
{

    return new FileContentResult(System.IO.File.ReadAllBytes(Server.MapPath(path)), "image");
}
视图中的代码正常。但要确保图像的路径类似于“~\Images\Test.png”;现在将命中控制器中的断点。当页面加载到客户端浏览器时,它将被命中

控制器中的
ReadFile()
方法应该是这样的-

public ActionResult ReadFile(string path)
{
    byte[] imgBytes = System.IO.File.ReadAllBytes(path);
    return File(imgBytes, "image/png"); 
}
这里,您的操作方法将图像文件读入字节数组,然后使用ActionResult基类的file()方法将内容发送给调用方

所以你可以这样用你的观点-

public ActionResult ReadFile(string path)
{
    byte[] imgBytes = System.IO.File.ReadAllBytes(path);
    return File(imgBytes, "image/png"); 
}

剃刀上

<img src="@Html.Action("ReadFile", "FLK", new { path = Model.Pict })" />


Url.Action
在mvc应用程序中生成指向指定视图的链接-它不会命中操作。你是否检查了链接是否正确生成(在html内部)?@pwas是的,链接生成正确,然后正如你所提到的,你是否有任何建议让我的链接命中一个动作/被调用。通常我在正常的web表单中使用这个技巧,它是有效的,但在MVC中却没有成功。它是Html.Action,而不是Url.Action。Url.Action生成链接和Html.Action实际上调用了该方法。@HendraLim:检查我的答案…+1 thx,我的方法现在被调用了,实际上我只需要将Url更改为Html,我尝试了ur,但现在的问题是调用我的方法时,它导致了此错误,执行处理程序'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'的子请求时出错,该请求将以Base64String形式发送图像,该字符串将显示图像。那么src应该如下所示:src=“data:image/jpeg;base64,am”@HendraLim:您的视图是Partialview还是normalview??如果可能的话,然后发布您视图的代码…这是一个普通视图,我在这里找到了一个解决方案@HendraLim:太好了…所以他们只在Url.action中指定了操作。这就是他们的答案和我的答案的不同,对吗??
<img src="@Html.Action("ReadFile", "FLK", new { path = Model.Pict })" />