And*_*rea 4 c# asp.net-core-mvc asp.net-core
我有一个表格:
@model TodoItem
<form asp-action="/Todo/AddItem" method="POST">
<label asp-for="Title">Add a new item:</label>
<input asp-for="Title">
<button type="submit">Add</button>
</form>
Run Code Online (Sandbox Code Playgroud)
我在 Index.html 中调用它
@await Html.PartialAsync("AddItemPartial", new TodoItem())
Run Code Online (Sandbox Code Playgroud)
单击按钮时调用控制器:
public async Task<IActionResult> AddItem(TodoItem newItem)
{
//code that calls service...
}
Run Code Online (Sandbox Code Playgroud)
我从未在 AddItem 上遇到断点,我读到它可能是由于 _ViewImports.cshtml 不在同一文件夹中或者它不包含 @addTagHelper 导致 asp 操作未触发。尝试了这些解决方案,但没有成功。
任何帮助,将不胜感激。
我认为当你使用asp-action时,你应该只指定动作名称而不是完整路径。
对于前。如果您的页面中的代码如下:
<form asp-controller="Demo" asp-action="Register" method="post">
<!-- Input and Submit elements -->
</form>
Run Code Online (Sandbox Code Playgroud)
该代码转换为以下代码:
<form method="post" action="/Demo/Register">
<!-- Input and Submit elements -->
<input name="__RequestVerificationToken" type="hidden" value="<removed for brevity>" />
</form>
Run Code Online (Sandbox Code Playgroud)
请检查服务器端代码转换为HTML后,没有asp-action,只有HTML表单可以理解的action属性。
对于您来说,您必须将代码更改为:
@model TodoItem
<form asp-controller="Todo" asp-action="AddItem" method="POST">
<label asp-for="Title">Add a new item:</label>
<input asp-for="Title">
<button type="submit">Add</button>
</form>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
3348 次 |
| 最近记录: |