路由问题阻止从数据库显示图像

时间:2019-04-20 15:30:33

标签: .net image model-view-controller routing core

我正在开发MVC C#.net Core应用程序。代码仍在开发中。我正在尝试显示从TinyMce存储在SqlServer数据库中的图像,我的路线之一似乎在url中添加了额外的目录地址。因此,我认为这是一个路由问题,但我愿意接受其他想法。

我已经在网上搜索并阅读了microsoft文档,但似乎找不到正确的路线。

此操作方法正常工作。请注意,没有{id}参数。 在列表中正确显示图像。 在浏览器中单击查看图像时,将产生以下路线... 本地主机:44353 / images / users / MyImage.jpg

    [Route("/[controller]/PostList")]
    public IActionResult PostList(Guid tagId, Guid authorId, int numPerPage = 10)
    {
        ICollection<Post> posts;
        string currentTag = string.Empty;
        string currentAuthor = string.Empty;

        if (tagId == Guid.Empty && authorId == Guid.Empty)
        {
            posts = _blogRepository.GetRecentPosts(numPerPage).ToList();
            currentTag = "All posts";
            currentAuthor = "All authors";
        }
        else if (!(tagId == Guid.Empty) && authorId == Guid.Empty)
        {
            Tag tag = _tagRepository.GetAllTags().FirstOrDefault(t => t.Id == tagId);
            posts = _blogRepository.GetPostsByTag(tag).OrderBy(p => p.ModifiedDate).ToList();
            currentTag = tag.Content;
            currentAuthor = "All authors";
        }
        else if (!(authorId == Guid.Empty) && tagId == Guid.Empty)
        {
            Author author = _authorRepository.Authors.FirstOrDefault(a => a.Id == authorId);
            posts = _blogRepository.GetPostsByAuthor(author).OrderBy(p => p.ModifiedDate).ToList();
            currentTag = "All posts";
            currentAuthor = author.AuthorName;
        }
        else
            posts = _blogRepository.GetRecentPosts(numPerPage).ToList();

        return View(new PostListViewModel
        {
            CurrentTag = currentTag,
            CurrentAuthor = currentAuthor,
            Posts = posts,
            AllTags = _tagRepository.GetAllTags().ToList(),
            AllAuthors = _authorRepository.Authors.ToList()
        });
    }

此Action方法不显示图像 在浏览器中单击查看图像时,将产生以下路线... 本地主机:44353 /博客/图像/用户/MyImage.jpg 添加{id}显然会改变路线... 我尝试了几种不同的路线都无济于事...

    [Route("/[controller]/PostDetail/{id}")]
    public IActionResult PostDetail(Guid id)
    {
        var post = _blogRepository.FindCurrentPost(id);
        if (post == null)
            return NotFound();

        return View(new PostDetailViewModel() {
            Post = post,
            AllAuthors = _authorRepository.Authors.ToList(),
            AllTags = _tagRepository.GetAllTags().ToList()
        });
    }

希望能够显示图像并具有正确的路线。

1 个答案:

答案 0 :(得分:0)

我终于知道了!

我删除了所有阻碍PostDetail Route的路由,并添加了一个非常简单的路由以从URL中删除“ Blog”。我不知道为什么我必须删除它的详细信息,但可以将其保留在列表中(我怀疑我正在使用的.net core版本为2.0.9的错误,但是我真的没有知道。

这是从URL中删除控制器的路由(注意:只有在先删除我为控制器定义的大多数其他路由之后才能使用...)现在将显示图像。

    [Route("PostDetail/{id}")]
    public IActionResult PostDetail(Guid id)
    {
        var post = _blogRepository.FindCurrentPost(id);
        if (post == null)
            return NotFound();

        return View(new PostDetailViewModel() {
            Post = post,
            AllAuthors = _authorRepository.Authors.ToList(),
            AllTags = _tagRepository.GetAllTags().ToList()
        });
    }