繁体   English   中英

将两个或多个参数从 model 视图传递到 EF Core / ASP.NET Core MVC 应用程序中的 controller

[英]Passing two or more parameters from model view to controller in EF Core / ASP.NET Core MVC application

当我_context.Controller.Remove(tbundle)其中 tbundle 如下时,我从表中成功删除。 我现在的问题是从视图中的删除按钮传递NodeIdBundleId的值。

BundleNode tbundle = _context.BundleNodes.Where(a => a.NodeId == 707955 && a.BundleId == 11).Single();

所以我想我需要修改这行代码:

public async Task<IActionResult> DeleteConfirmed(int id)

这样它将接受两个参数:

我试过这个:

public async Task<IActionResult> DeleteConfirmed(int NodeId, int BundleId)

但它不起作用。 也许这是正确的语法,但我不确定如何在视图中构造 URL 以便 controller 正确使用它。

视图中的删除按钮代码为:

 <td style="text-align: center"> <a asp-action="Delete" asp-route-id="?n_id=@item.NodeId&b_id=@item.BundleId"> <i class="fas fa-trash" style="color:red"></i> </a> </td>

当我在删除按钮上使用 hover 时,URL(左下角)看起来像这样:“https://localhost:44324/BundleNodes/Delete/?n_id=739938&b_id=11”这正是它的意思。 如果我将 URL 粘贴到浏览器中,则 n_id 和 b_id 变量会正确填充,并且一切正常。 (仅供参考,如果我正确时钟并复制链接并将其粘贴到浏览器中,它看起来像这样:“https://localhost:44324/BundleNodes/Delete/%3Fn_id%3D910699%26b_id%3D11)。如果我点击删除按钮然后 n_id 和 b_id 都是 null ,当然删除失败,因为没有什么可以删除。

找到了解决方案。 对于视图中的按钮:

 @{ var link1 = Url.RouteUrl("twoids", new { controller = "BundleNodes", Action = "Delete", n_id = item.NodeId, b_id = item.BundleId }); } <a href="@link1"> <i class="fas fa-trash" style="color:red"></i></a>

和 Program.cs 中的自定义路由

 app.MapControllerRoute(name: "twoids", pattern: "BundleNodes/Delete/{n_id}/{b_id}", , defaults: new { controller = "BundleNodes", action = "Delete"} );

当你知道怎么做时很容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM