如何在我传递给视图的字符串中从控制器调用操作?

时间:2019-06-18 09:58:16

标签: c# asp.net-mvc .net-core

就像标题所说的那样,我正在搜索如何继续从我的ASP .NET控制器之一调用动作;主要的问题是,我必须使用一个字符串,因为我生成了一个Objects列表,然后执行foreach编写我的HTML代码,然后将ViewData传递给我的视图。直到我想在图像中实现链接之前,它都像魅力一样。

我尝试了很多事情,包括

<%: @Url.Action('Movie(movieTrending.Id)', 'HomeController')>

                        "       <a asp-area='' class='' asp-controller='Home' asp-route-id='" + movieTrending.Id + "' asp-action='Movie'>" +
                        "           <img class='card-img-top rounded img-fluid' src='" + "https://image.tmdb.org/t/p/w500" + movieTrending.PosterPath + "' alt='Card image cap'>" +
                        "       </a>"

它们都不起作用,因为它们被我的浏览器读取为乱码HTML代码,而不是ASP代码。

我进行了很多搜索,但似乎没有人尝试过我现在正在做的事情。

我生成对象列表的代码:

        public IActionResult Index()
        {
            ViewData["Title"] = "Home";
            ViewData["WelcomeMessage"] = "Welcome to Website ! Please create an account to get access to all the features.";

            SearchContainer<SearchMovie> results = client.GetMoviePopularListAsync().Result;

            int rows = 0;

            foreach (SearchMovie movieTrending in results.Results)
            {
                if (rows == 0)
                {
                    ViewData["Content"] += "<div class='row mt-4 mb-4'>";
                }

                ViewData["Content"] +=
                        "<div class='col-md-3 col-sm-3 col-3'>" +
                        "   <div class='card text-black';'> " +
                        "       <a asp-area='' class='' asp-controller='Home' asp-route-id='" + movieTrending.Id + "' asp-action='Movie'>" +
                        "           <img class='card-img-top rounded img-fluid' src='" + "https://image.tmdb.org/t/p/w500" + movieTrending.PosterPath + "' alt='Card image cap'>" +
                        "       </a>" +
                        "   </div>" +
                        "</div>";

                if (rows == 3)
                {
                    ViewData["Content"] += "</div>";
                    rows = 0;
                }
                else
                {
                    rows += 1;
                }
            }

            return View();
        }

我要呼叫的动作。它们在同一控制器中。

        [Route("{action = Movie}/{idMovie}")]
        public IActionResult Movie(int idMovie)
        {
            Movie movie = client.GetMovieAsync(idMovie).Result;

            if (movie != null)
            {
                ViewData["ImageMovie"] = movie?.Images?.Posters;
                ViewData["Title"] = movie?.Title;
                ViewData["Genre"] = movie?.Genres;
                ViewData["Release"] = movie?.ReleaseDate;

                return View();
            }

            return Index();
        }

PS:我不希望代码审查。我不在乎您是否发现我的代码错误。我不在乎是否有错误。这不是代码审查,我想解决一个问题。请不要说“哦,这段代码太错了!”我不在乎,我不是在要求代码审查,我是在寻求有关此特定问题的帮助。如果您避免进行代码审查,我们俩都将获得时间。因为这不是我要的。这是一个个人项目,而不是专业项目,它将永远不会在生产中使用,仅供我个人使用。

谢谢。

0 个答案:

没有答案