就像标题所说的那样,我正在搜索如何继续从我的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:我不希望代码审查。我不在乎您是否发现我的代码错误。我不在乎是否有错误。这不是代码审查,我想解决一个问题。请不要说“哦,这段代码太错了!”我不在乎,我不是在要求代码审查,我是在寻求有关此特定问题的帮助。如果您避免进行代码审查,我们俩都将获得时间。因为这不是我要的。这是一个个人项目,而不是专业项目,它将永远不会在生产中使用,仅供我个人使用。
谢谢。