c# - 如何让搜索功能在 asp.net blazor 中工作
问题描述
我有一个文本输入,它将采用搜索字符串。当用户单击搜索按钮时,将搜索文本并将结果显示在搜索组件中。我已经完成了我理解的控制器工作正常。但我可以用BLAZOR完成它
我希望结果显示在列表中
控制器方法
[HttpGet
[Route("search")]
public async Task<List<Issue>> SearchIssuesAsync(string searchItem)
{
return await _context.Issues.Where(s => s.IssueName.ToLower().Contains(searchItem.ToLower())).ToListAsync();
}
这就是我在 Blazor 中挣扎的地方
@page "/search"
@inject IssuesController issuesController
@code {
Issue issues = new Issue();
string Issues { get; set; } = "";
async Task SearchIssues()
{
Issues = await issuesController.SearchIssuesAsync(Issues);
}
}
<div class="row mt-5">
<div class="col-md-2">
</div>
<div class="col-md-8">
<EditForm Model="@Issues" OnValidSubmit="@SearchIssues">
<div class="form-group">
<label for="">Search</label>
<input type="text" class="form-control" @bind-value="@Issues" id="text" placeholder="Search Issue">
</div>
<button type="submit" class="btn btn-primary justify-content-center">Submit</button>
</EditForm>
</div>
<div class="col-md-2">
</div>
</div>
@{
@if (Issues == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Resolution</th>
</tr>
</thead>
<tbody>
@foreach (var client in Issues)
{
<tr>
<td>@client.Name</td>
<td>@client.Resolution</td>
</tr>
}
</tbody>
</table>
}
}
解决方案
您不要为此使用 EditForm。只需放置一个带有按钮的文本框,单击该按钮时会调用本地方法来检索数据,如下所示:
@if (issues == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Resolution</th>
</tr>
</thead>
<tbody>
@foreach (var client in issues)
{
<tr>
<td>@client.Name</td>
<td>@client.Resolution</td>
</tr>
}
</tbody>
</table>
}
<input type="text" @bind-value="@searchTerm" />
<input type="button" value="Search" @onclick="@SearchIssues"/>
@code {
private string searchTerm;
private List<Issue> issues;
async Task SearchIssues()
{
issues= await issuesController.SearchIssuesAsync(searchTerm);
}
}
我猜你正在使用 Blazor Server 应用程序,对吧?无论如何,注意命名对象......我猜IssuesController实际上是一个应该命名的服务,比如IssuesService......
推荐阅读
- django - 用户始终为无,不允许用户登录
- python - 在 python 中使用 for 循环将 skimage.filters.threshold_otsu() 应用于图像/数组中的段列表时面临问题
- laravel - 为什么我的 .env 总是与旧数据库连接?
- python-3.x - url.request.urlritrive 没有下载图片
- python-3.x - 如何接受请求并在不同的线程中执行它们?
- ethereum - Tron 是否有替代的 block.timestamp(以太坊)?(计时器)
- app-store-connect - 在 testflight 上更新构建
- javascript - 正则表达式:对不支持的负向向后看使用负向向前看,并在拆分时捕获字符后面的向后看
- c - 即使在交换参数时,printf() 在 x86-64 平台上也能提供相同的输出
- sql - 需要在一个序列中插入一个字符串