加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC动态生成的图像URL

发布时间:2020-12-16 03:18:50 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET MVC应用程序,我正在显示图像. 这些图像可以位于文件系统上或数据库内.这很好,因为我可以在我的图像中使用Url.Action,在我的控制器上调用动作并从相关位置返回图像. 但是,我希望能够支持存储在Amazon S3中的图像.在这种情况下,我不希望我的控
我有一个ASP.NET MVC应用程序,我正在显示图像.

这些图像可以位于文件系统上或数据库内.这很好,因为我可以在我的图像中使用Url.Action,在我的控制器上调用动作并从相关位置返回图像.

但是,我希望能够支持存储在Amazon S3中的图像.在这种情况下,我不希望我的控制器操作返回图像,它应该生成Amazon S3的图像URL.

虽然我可以在我的视图中执行此逻辑,例如

<%if(Model.Images [0] .ImageLocation == ImageLocation.AmazonS3){%>
//渲染亚马逊图像

我需要先确保图像存在.

基本上我需要将一个大小值传递给我的控制器,以便我可以检查图像是否以该大小存在(无论是在数据库,文件系统还是亚马逊s3中).一旦我确定图像存在,那么我将URL返回给它.

希望有道理,

解决方法

尝试以下方法.

图像标记的模型类.

public class ImageModel
{
    public String Source { get; set; }
    public String Title { get; set; }
}

帮手

public static String Image(this HtmlHelper helper,String source,String title)
{
    var builder = new TagBuilder("img");
    builder.MergeAttribute("src",source);
    builder.MergeAttribute("title",title);
    return builder.ToString();
}

使用Model.Images类型IEnumerable< ImageModel>查看

...    
<%= Html.Image(Model.Images[0].Source,Model.Images[0].Title) %>

行动

public ActionResult ActionName(/*whatever*/)
{
    // ...
    var model = ...;
    //...

    var model0 = ImageModel();
    if (Image0.ImageLocation == ImageLocation.AmazonS3)
        model0.Source = "an amazon url";
    else
        model0.Source = Url.Action("GetImageFromDatabaSEOrFileSystem","MyController",new { Id = Image0.Id });
    model0.Title = "some title";
    model.Images.Add(model0);
    // ...
    return View(model);
}

动作是一种伪代码,但这个想法应该是清楚的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读