我正在尝试搜索框。当我按下搜索按钮时,什么也没有发生。我想重定向到/ Search&searchTerm = il。还有如何获取输入框中输入的内容并将其添加到asp-route-searchTerm?
<div class="input-group col-4">
<input class="form-control py-2" type="search" placeholder="Search books and authors">
<span class="input-group-append">
<button asp-page="/Search" asp-route-searchTerm="il" class="btn btn-outline-secondary" type="button">
<i class="fa fa-search"></i>
</button>
</span>
</div>
答案 0 :(得分:0)
据我所知,.NET Core中的form
标签默认为method = "POST"
。
我看到您正在尝试执行的是GET请求。
尝试通过GET更改POST。
<form method="GET">
</form>
您的按钮标签如下:
<button asp-action="Search" asp-controller="YourController" class="btn btn-outline-secondary" type="button">
<i class="fa fa-search"></i>
</button>
“搜索”是您的操作的名称,“ YourController”是您的控制器的名称。
和 YourController.cs
中有关搜索操作的信息:
public IActionResult Search(string SearchTerm)
{
var model = new ModelClass();
//Your search logic
return View(model);
}
您的搜索结果页可能名为 Search.cshtml
,应收到ModelClass模型,例如(该类位于Search.cshtml的顶部):
@model YourProject.Models.ModelClass
也许您的模型应该具有以下属性:
public class ModelClass
{
public string Name {get;set;}
//more properties
}
此外,我不想听起来很粗鲁,但是毛伯,您应该再次快速了解MVC模式设计。
祝你好运。
答案 1 :(得分:0)
就拿get而言,另一个例子是正确的,但是休息是错误的技术 剃刀页面:
HTML
<form sp-page="./Index" method="get">
<div class="form-actions no-color">
<p>
<input type="text" name="SearchString" value="@Model.CurrentFilter" placeholder="Add search term" class="form-control" />
<button type="submit" value="Search" class="btn btn-primary btn-round">
<i class="material-icons">search</i>
Search
</button> |
<a asp-page="./Index">Back to full List</a>
</p>
</div>
</form>
后面的代码:
声明拥有财产
public string CurrentFilter { get; set; }
您的OnGetAsync
public async Task<IActionResult> OnGetAsync(string searchString)
{
if (!string.IsNullOrEmpty(searchString)) { CurrentFilter = searchString; }
请注意,表单标签为:
注意OnGet接收字符串(查询字符串参数searchString)
请注意,“文本”字段具有名称参数。
额外的属性CurrentFilter可以使它记住并绑定模型。因此分页,按等排序也可以在该URL中