【问题标题】:How to get a search functionality work in asp.net blazor如何让搜索功能在 asp.net blazor 中工作
【发布时间】:2019-12-24 09:09:51
【问题描述】:

我有一个文本输入,它将接受搜索字符串。当用户单击搜索按钮时,将搜索文本并将结果显示在搜索组件中。我已经完成了我理解的控制器工作正常。但我可以用 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>
    }

}


【问题讨论】:

  • 我相信你正在寻找onchange事件
  • 我该如何实现?
  • 看看这个section
  • @Bercovici Adrian,您正在将他重定向到一个网站,这是同类网站中最好的,但大约 2 年前就被废弃了。

标签: c# asp.net-core blazor


【解决方案1】:

您不为此使用 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...

【讨论】:

  • 您的意思是您使用的是服务器端 Blazor,对吗?你试过我的代码了吗?
猜你喜欢
  • 1970-01-01
  • 2013-04-29
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 2012-10-13
  • 2011-11-05
  • 1970-01-01
相关资源
最近更新 更多