我目前正在使用ajax jquery用动态值填充img src。由于图像无论如何要进入服务器,我想删除代码的jquery部分
我目前拥有什么
Javascript(这是我要删除的代码)
var Onload= function () {
$.each($('.image'), function (x, item) {
$.ajax({
url: '/MyController/MyAction/?imageName=' + $(item).attr('data-image-name'),
type: 'GET',
dataType: 'html',
success: function (data) {
$(item).attr('src', data);
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
});
};
服务器端代码
public string MyAction(string imageName)
{
return imageUrl = _myService.GetImageUrl(imageName);
}
HTML
@foreach(var i in Model)
{
<img src="" class="image" data-image-name="@i.Name"/>//this is current html
//<img src="/MyController/Myaction/imageName" + @i.Name />
//i am trying to get something like second img tag
//but if i do this it populates with the controller/action url,
//not the result of the action method url
}
我知道viewmodels和那种东西。我不是在寻找一个答案,“将此信息放入您的模型/视图模型中。”
答案 0 :(得分:0)
我看到了几个选项:
- 把它放在ViewModel中(老实说,我认为最干净的选择)
- 做这样的事情:
@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" />