R. *_*ing 7 c# form-submit submit-button asp.net-core
我有一个带有表单和多个提交按钮的剃刀页面。对于每个按钮,我想在代码隐藏文件中启动不同的 Post 操作。这是我的 cshtml 页面:
\n<form class="form" method="post" >\n <input type="submit" value="Test1" formaction="Button1" />\n <input type="submit" value="Test2" formaction="Button2" />\n</form>\nRun Code Online (Sandbox Code Playgroud)\n这在我的 cshtml.cs 文件中:
\n[HttpPost]\npublic IActionResult Button1(IFormCollection data)\n{\n//my code\n}\n\n[HttpPost]\npublic IActionResult Button2(IFormCollection data)\n{\n//my code\n}\nRun Code Online (Sandbox Code Playgroud)\n不幸的是,这不起作用。当我提交时出现 404 错误:
\n无法找到此 localhost 页面\xe2\x80\x99 找不到该网址的网页:https://localhost:44366/Mutations/Button1\nHTTP ERROR 404
\n正确的 URL 应该是:https://localhost:44366/Mutations/Test
\n我究竟做错了什么?
\nYin*_*qiu 10
因为你是 中的项目Razor,所以 中的路由规则Razor与项目不同MVC,你可以更改你的代码如下:
您的 cshtml.cs 文件:
public IActionResult OnPostButton1(IFormCollection data)
{
//...
}
public IActionResult OnPostButton2(IFormCollection data)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
你的cshtml页面:
<form class="form" method="post">
<input type="submit" value="Test1" asp-page-handler="Button1"/>
<input type="submit" value="Test2" asp-page-handler="Button2"/>
</form>
Run Code Online (Sandbox Code Playgroud)
您必须为这两个操作分配不同的路由(与您的 匹配formaction):
[HttpPost("button1")]
public IActionResult Button1(IFormCollection data)
{
//my code
}
[HttpPost("button2")]
public IActionResult Button2(IFormCollection data)
{
//my code
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9039 次 |
| 最近记录: |