如何“;寻呼”;结果放入行而不是页面
本文关键字:寻呼 结果 如何 | 更新日期: 2023-09-27 18:00:45
这个对我来说很难用词,这就是我在谷歌搜索中失败的原因,我是asp.net的新手,它给我这个需求的逻辑带来了一些困难
我有一堆结果,主要显示为叠加了一些文本的图像。
我有一些显示这些图像所需的HTML,但它使用自定义样式来显示每一行图像,它使用div来显示自定义外观。
我需要做的是,在cshtml文件中找到一种方法,显示一个html块来开始一行,然后输出其中6个项目的html,然后关闭该行并开始另一行,并重复冲洗直到完成,但我一辈子都无法在asp.net中找到如何做到这一点。
这可能是一个非常非常简单的问题,但由于我无法在谷歌上正确使用这个词,我真的很难在网上找到任何东西。
我能想到的最接近视觉的例子是类似Netflix的东西,但无法滚动电影,所以所有电影都列在这些行中。
我目前正在使用以下方法,
@foreach (var item in Model)
{
html...
}
我最初的想法是有一个计数器,当计数达到6时做一个条件语句,关闭行并开始一个新的行,但我不知道如何将那么多html混合到代码块中。
@{
int count = 0;
foreach(var item in model)
{
count++;
//Output current item's html
if(count == 6)
{
//End current row, start new row
count = 0;
}
}
但正如我所提到的,我只能找到如何使用@:方法将单个html元素与代码块混合在一起,并且我需要一个html块。
根据要求添加我的控制器代码,我可以使用viewbag进行操作,但groupedModel似乎将每部电影分割成一行。
// GET: Movies
public ActionResult Index(string movieGenre, string searchString)
{
var GenreList = new List<string>();
var GenreQry = from d in db.Movies
orderby d.Genre
select d.Genre;
GenreList.AddRange(GenreQry.Distinct());
ViewBag.movieGenre = new SelectList(GenreList);
var movies = from m in db.Movies
select m;
if(!String.IsNullOrEmpty(searchString))
{
movies = movies.Where(s => s.Title.Contains(searchString));
}
if(!string.IsNullOrEmpty(movieGenre))
{
movies = movies.Where(x => x.Genre == movieGenre);
}
var groupedModel = movies.AsEnumerable().Select((e, i) => new { Element = e, Index = i }).GroupBy(e => e.Index % 6).Select(g => g.Select(e => e.Element));
ViewBag.grouped = groupedModel;
return View(movies);
}
以及我的观点(为了便于阅读,删除了大部分HTML):
@model IEnumerable<MvcMovie.Models.Movie>
@{
ViewBag.Title = "Index";
}
<p>
@Html.ActionLink("Create New", "Create")
@using (Html.BeginForm("Index", "Movies", FormMethod.Get))
{
<p>
Genre: @Html.DropDownList("movieGenre", "All")
Title: @Html.TextBox("SearchString")
<input type="submit" value="Filter" />
</p>
}
</p>
@foreach(var group in ViewBag.grouped)
{
<div class="MovieRow">
@foreach (var item in group)
{
<div class="bob-title">@Html.Display((item as MvcMovie.Models.Movie).Title)</div>
}
</div>
}
编辑:
我现在剩下的唯一问题是,我似乎无法输出项变量,@Html.Display((item as MvcMovie.Models.Movie)
部分都没有输出任何内容。
首先,让我们对您的模型进行分组,以获得具有6个元素的组(最好在控制器中进行,而不是在视图中):
var groupedModel = Model.Select((e, i) => new { Element = e, Index = i })
.GroupBy(e => (e.Index - 1) / 6)
.Select(g => g.Select(e => e.Element));
然后迭代这些组并显示它们:
@foreach(var group in groupedModel)
{
<div id="rowDiv">
@foreach(var element in group)
{
<div id="elementDiv">// element div here
// display element info here
</div>// element div end
}
</div> // row div end
}