onget handler 剃须刀页面
onget handler razor pages
我在 asp.net 个核心剃须刀页面上的 GET 表单上有一个按钮
<form method="get" asp-page="Index">
<button type="submit" asp-page="Index" asp-page-handler="Something" class="btn btn-primary"></button>
</form>
以及背后的代码
public IActionResult OnGetSomething(){
//... some code
return Page();
}
我的问题是永远不会执行 onget 处理程序代码
如果表单是 POST onpost 处理程序可以正常工作,但如果是 GET 则不起作用
那么我在这里缺少什么?以及如何使 onget 处理程序工作?
你不能去获取方法,因为参数不匹配。
假设:
在控制器中
[HttpGet]
public IActionResult Create()
{
return View();
}
//Post Method
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(string Name)
{
}
在视图中:
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>]
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
然后它进入 post 方法,因为它有 1 个参数(名称)。如果我们没有任何输入或参数不相同,那么它会使用不同的方法。
是方法重载的概念
在方法重载的细节中https://www.geeksforgeeks.org/c-sharp-method-overloading/
当您使用 GET
提交表单时,浏览器会丢弃表单操作中的查询字符串值,并用从表单字段构建的新查询字符串替换它们。您可以通过向表单添加适当的隐藏字段来命中您的处理程序:
<form method="get" asp-page="Index">
<input type="hidden" name="handler" value="Something" />
<button type="submit" class="btn btn-primary">Get</button>
</form>
我在 asp.net 个核心剃须刀页面上的 GET 表单上有一个按钮
<form method="get" asp-page="Index">
<button type="submit" asp-page="Index" asp-page-handler="Something" class="btn btn-primary"></button>
</form>
以及背后的代码
public IActionResult OnGetSomething(){
//... some code
return Page();
}
我的问题是永远不会执行 onget 处理程序代码 如果表单是 POST onpost 处理程序可以正常工作,但如果是 GET 则不起作用
那么我在这里缺少什么?以及如何使 onget 处理程序工作?
你不能去获取方法,因为参数不匹配。 假设:
在控制器中
[HttpGet]
public IActionResult Create()
{
return View();
}
//Post Method
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(string Name)
{
}
在视图中:
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>]
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
然后它进入 post 方法,因为它有 1 个参数(名称)。如果我们没有任何输入或参数不相同,那么它会使用不同的方法。
是方法重载的概念
在方法重载的细节中https://www.geeksforgeeks.org/c-sharp-method-overloading/
当您使用 GET
提交表单时,浏览器会丢弃表单操作中的查询字符串值,并用从表单字段构建的新查询字符串替换它们。您可以通过向表单添加适当的隐藏字段来命中您的处理程序:
<form method="get" asp-page="Index">
<input type="hidden" name="handler" value="Something" />
<button type="submit" class="btn btn-primary">Get</button>
</form>