Jquery 使用img src检索动态服务器数据

Jquery 使用img src检索动态服务器数据,jquery,html,asp.net-mvc-4,Jquery,Html,Asp.net Mvc 4,我目前正在使用ajax jquery用动态值填充img src。因为映像无论如何都要发送到服务器,所以我想删掉代码中的jquery部分 我现在拥有的 Javascript(这是我想丢弃的代码) 服务器端代码 public string MyAction(string imageName) { return imageUrl = _myService.GetImageUrl(imageName); } HTML @foreach(模型中的变量i) { //这是当前的html // //

我目前正在使用ajax jquery用动态值填充img src。因为映像无论如何都要发送到服务器,所以我想删掉代码中的jquery部分

我现在拥有的

Javascript(这是我想丢弃的代码)

服务器端代码

public string MyAction(string imageName)
{
    return imageUrl = _myService.GetImageUrl(imageName);
} 
HTML

@foreach(模型中的变量i)
{
//这是当前的html
//
//我正试图得到像第二个img标签的东西
//但如果我这样做,它将填充控制器/操作url,
//不是操作方法url的结果
}

我知道viewmodels之类的东西。我不是在寻找这样一个答案:“将此信息放入您的模型/视图模型中。”

我看到了几个选项:

-将其放在ViewModel中(老实说,我认为这是最干净的选项)

-这样做:

@foreach(var i in Model)
{       
    <img src="@_myService.GetImageUrl(@i.Name)"/>
}
@foreach(模型中的变量i)
{       
}
-创建一个返回图像而不是url的操作。我认为这可能是最接近你想要的:

public ActionResult MyAction(string imageName)
{
    var path= Server.MapPath(_myService.GetImageUrl(imageName));
    return base.File(path, "image/jpeg");
}

<img src="/MyController/Myaction/?imageName=@i.Name" />
公共操作结果MyAction(字符串imageName) { var path=Server.MapPath(_myService.GetImageUrl(imageName)); 返回base.File(路径“image/jpeg”); }
第二种解决方案可能与我所做的重复。我得到一个500的错误。查看网络中的“预览”选项卡时,出现以下错误消息:“myimage.jpeg”不是有效的虚拟路径。如果我在新的浏览器窗口中复制并通过url,它会正确显示图像,类型为text/html。我认为这是问题的根源。它应该是image/Hm,我注意到我应该使用
@I.Name
,当然
\u myService
最初可能没有定义,但我想你已经处理好了。查看页面源代码时,呈现的src是什么?src=“/MyController/MyAction/?imageName=Image1”啊,所以可能是
\u myService.GetImageUrl(imageName)
正在返回
myimage.jpeg
,而
Server.MapPath()
不喜欢它。您可能需要重构一点以获得映像的虚拟路径,而不仅仅是映像名。
@foreach(var i in Model)
{       
    <img src="@_myService.GetImageUrl(@i.Name)"/>
}
public ActionResult MyAction(string imageName)
{
    var path= Server.MapPath(_myService.GetImageUrl(imageName));
    return base.File(path, "image/jpeg");
}

<img src="/MyController/Myaction/?imageName=@i.Name" />