Sam*_*Sam 2 asp.net-mvc tag-helpers asp.net-core
我在一个实例中使用了 asp-route-id:
它从这样的锚标签工作:
<a id="editModal" data-toggle="modal" data-target="#modal_box"
class="btn btn-sm btn-primary"
asp-action="Edit" asp-route-id="@user.Id">Edit</a>
Run Code Online (Sandbox Code Playgroud)
并像这样收到:
public async Task<PartialViewResult> DeleteConfirm(string Id) =>
PartialView("_DeleteConfirm", await _userManager.FindByIdAsync(Id));
Run Code Online (Sandbox Code Playgroud)
此方法接收正确的 id。
下一个示例在表单标签中包含路由 id,如下所示:
<div class="modal-footer">
<form asp-controller="Account" asp-action="Delete" asp-route-id="@Model.Id" method="post">
<button type="submit" class="btn btn-primary"
asp-action="Delete">Yes - Delete this User</button>
<a asp-action="Index" class="btn btn-default">Cancel</a>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
我试图在这里接收 ID:
[HttpPost]
public async Task<IActionResult> Delete(string Id)
{
AppUser user = await _userManager.FindByIdAsync(Id);
if (user != null)
{
IdentityResult result = await _userManager.DeleteAsync(user);
if (result.Succeeded)
{
return RedirectToAction("Index");
}
else
{
AddErrorsFromResult(result);
}
}
else
{
ModelState.AddModelError("", "User Not Found");
}
return View("Index", _userManager.Users);
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,参数为空。
它应该从 from 标签开始工作。我从 Adam Freemans APress MVC Core 书中的第一章 Identity Chapter 中得到了这个,当我为那个例子输入它时它起作用了。
我检查了表单标签以回应 junnas 的评论。
它看起来像这样:
<form method="post" action="/Account/Delete/5066a97b-7eb4-4e1d-889b-3f3450adc1d6">
<button type="submit" class="btn btn-primary" formaction="/Account/Delete">Yes - Delete this User</button>
<a class="btn btn-default" href="/Account">Cancel</a>
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8At6yzynfgJHstUkF5jJTYgHHX0on9ajBa9NfD60YGbM7aRhKjDQUGkh4gPAMkwwOsnqUtDxSx87MnUvbxcefB7tGX1v0Xi38h_SoL_iakiFdJSpUbymp4tsr-cMFNK3kwYx7o42OumLkFbvFn1Nyun_8LDc0mmOvGN5LeeHiIq84cSJCaaiyR_2talw6Dpcvw" /></form>
Run Code Online (Sandbox Code Playgroud)
请注意,除了表单操作之外,按钮右侧还有额外的 formaction="/Account/Delete">。
我在从锚点更改的按钮上留下了额外的 asp-route-id。
我不得不把它从这里的按钮上取下来:
<form asp-controller="Account" asp-action="Delete" asp-route-id="@Model.Id" method="post">
<button asp-route-id="@Model.Id" type="submit" class="btn btn-primary">Yes - Delete this User</button>
<a asp-action="Index" class="btn btn-default">Cancel</a>
</form>
Run Code Online (Sandbox Code Playgroud)
并使按钮像这样:
是 - 删除该用户
| 归档时间: |
|
| 查看次数: |
12744 次 |
| 最近记录: |