【问题标题】:Razor page custom post method not firingRazor 页面自定义发布方法未触发
【发布时间】:2021-11-27 10:02:18
【问题描述】:

为什么会这样:

<form method="post">
  <nav>
   <ul class="pagination justify-content-center">
    <li class="page-item">
      <a class="page-link" asp-page-handler="filter" asp-route-id="1">1</a>
    </li>
   </ul>
  </nav>
 </form>

不会在后端触发 OnPostFilter 方法?

public void OnGet()
    {
        ProdGoal = 15000;
        FillChart();
    }

    public void OnPostFilter(string id)
    {
        int MonthNum;
        if (int.TryParse(id, out MonthNum) && MonthNum >= 1 && MonthNum <= 12)
            FillChart(MonthNum);
        else
            FillChart();
    }

它总是触发 OnGet()。但是,当我将标签移到它前面时,它会起作用。这是为什么?我应该如何制作fire Post方法。

【问题讨论】:

  • 你在哪里给 OnPostFilter?
  • @viveknuna 你是什么意思?它是这个页面前端的cs文件

标签: c# asp.net-core post get razor-pages


【解决方案1】:

因为点击&lt;a class="page-link" asp-page-handler="filter" asp-route-id="1"&gt;1&lt;/a&gt;的时候请求方法是get的,所以不能去post handler。

1.您可以尝试将处理程序名称更改为OnGetFilter

public void OnGetFilter(string id)
    {
        int MonthNum;
        if (int.TryParse(id, out MonthNum) && MonthNum >= 1 && MonthNum <= 12)
            FillChart(MonthNum);
        else
            FillChart();
    }

2.如果您不想更改处理程序名称,请尝试更改您的html:

<form method="post" asp-page-handler="filter" asp-route-id="1">
    <nav>
        <ul class="pagination justify-content-center">
            <li class="page-item">
                <input type="submit" value="1"/>
            </li>
        </ul>
    </nav>
</form>

【讨论】:

  • 好吧,也许我不明白获取/发布的目的。据我了解,每次点击页面都会调用 post 方法。我还是剃刀页面的新手。
  • 如果我的回答有帮助,你能接受吗?谢谢。
  • 它并没有真正回答我的问题,但它可以引导某人找到解决方案
【解决方案2】:

我变了

<input type="submit" value="1"/>

<button ... />

现在它可以工作了,但我仍然不知道为什么输入会触发 OnGet()

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 2020-05-16
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    相关资源
    最近更新 更多