在 mvc razor 页面上搜索列表
Searching through a list on mvc razor pages
我有以下型号:
public class Photo
{
public string Id { get; set; }
public List<string> Hashtag { get; set; }
public string PhotoUrl { get; set; }
public string SearchString { get; set; }
}
我的观点是这样的:
@model PhotoSearch.Models.Photo[]
<div class="text-center">
<p>Search.</p>
<form>
<p>
Title: <input type="text" asp-for="SearchString" />
<input type="submit" value="Filter" />
</p>
</form>
</div>
<h2>Photos</h2>
@{
foreach (var photo in @Model)
{
<table>
<tr>
<th>URL</th>
<th>Hashtags</th>
</tr>
<tr>
<th>@photo.PhotoUrl %</th>
<th>@String.Join(", ", @photo.Hashtag.ToArray());</th>
</tr>
</table>
}
}
我正在从 API 获取最初为 Json 格式的照片列表,然后将它们反序列化为上述对象:
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(baseUrl))
{
using (HttpContent content = response.Content)
{
string data = await content.ReadAsStringAsync();
if (data != null)
{
var photoList = JsonConvert.DeserializeObject<Photo[]>(data);
if (!String.IsNullOrEmpty(searchString))
{
var filteredList = photoList.Where(v => v.Hashtags.Contains(searchString));
return View(filteredList);
}
return View(photoList);
}
}
}
}
我在顶部设置了搜索表单,因为我希望用户能够输入主题标签列表,这将过滤结果,就像填充了 SearchString 一样,不同的视图将仅显示过滤后的照片.我的问题是 SearchString 是 Photo 的 属性 而不是视图中使用的 Photo[]。如果我使用 foreach,搜索框只会出现几次。有没有更简单的方法可以过滤照片?
这里不用asp-for。您可以只将输入名称设置为 SearchString
,因为模型绑定是基于名称的。
<input type="text" id="SearchString" name="SearchString" />
我有以下型号:
public class Photo
{
public string Id { get; set; }
public List<string> Hashtag { get; set; }
public string PhotoUrl { get; set; }
public string SearchString { get; set; }
}
我的观点是这样的:
@model PhotoSearch.Models.Photo[]
<div class="text-center">
<p>Search.</p>
<form>
<p>
Title: <input type="text" asp-for="SearchString" />
<input type="submit" value="Filter" />
</p>
</form>
</div>
<h2>Photos</h2>
@{
foreach (var photo in @Model)
{
<table>
<tr>
<th>URL</th>
<th>Hashtags</th>
</tr>
<tr>
<th>@photo.PhotoUrl %</th>
<th>@String.Join(", ", @photo.Hashtag.ToArray());</th>
</tr>
</table>
}
}
我正在从 API 获取最初为 Json 格式的照片列表,然后将它们反序列化为上述对象:
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(baseUrl))
{
using (HttpContent content = response.Content)
{
string data = await content.ReadAsStringAsync();
if (data != null)
{
var photoList = JsonConvert.DeserializeObject<Photo[]>(data);
if (!String.IsNullOrEmpty(searchString))
{
var filteredList = photoList.Where(v => v.Hashtags.Contains(searchString));
return View(filteredList);
}
return View(photoList);
}
}
}
}
我在顶部设置了搜索表单,因为我希望用户能够输入主题标签列表,这将过滤结果,就像填充了 SearchString 一样,不同的视图将仅显示过滤后的照片.我的问题是 SearchString 是 Photo 的 属性 而不是视图中使用的 Photo[]。如果我使用 foreach,搜索框只会出现几次。有没有更简单的方法可以过滤照片?
这里不用asp-for。您可以只将输入名称设置为 SearchString
,因为模型绑定是基于名称的。
<input type="text" id="SearchString" name="SearchString" />