Razor Pages中的Form Action Tag Helper不会重定向我

时间:2018-07-12 19:24:26

标签: html asp.net-core razor-pages asp.net-core-tag-helpers

我正在尝试搜索框。当我按下搜索按钮时,什么也没有发生。我想重定向到/ 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>

2 个答案:

答案 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中