在核心 MVC 中传递参数 ID ASP.NET?获取空 ID



当将参数 cartId 传递给操作方法 Index(( 并转到路由/cart/{cartId} 时,因此/cart/1 - cartId 始终为空!

我在购物车控制器中有一个操作方法.cs

public IActionResult Index([FromRoute] int? cartId)
{
if(cartId == null)
Cart = _cartsService.GetCartById(1);

if (!cartId.HasValue)
return Content("Cart id with given id not found!");

// Model bind to the Cart of MockCartRepository (entity type?)
Cart = _cartsService.GetCartById(cartId.Value);
if (Cart == null)
return Content("Cart not found in database");
return View(Cart);
}

我有一个名为index.cshtml的视图

@model eComStore.Models.Cart
@{
ViewData["Title"] = "Cart";
}
<div class="text-center">
<h2 class="display-4">My Cart Id @Model.cartId</h2>
@foreach (var product in Model.ProductsInCart)
{
<h5>Product Id @product.ProductId</h5>
<h5>Product Qty @product.qty</h5>
<br />
<br />
<br />
}
</div>

调试时:转到 https://localhost:44308/Cart/1 我在 cartId 中得到一个空值

核心剃刀页面和 MVC 中传递参数的方式 ASP.NET 有什么区别吗?

我做错了什么?

您是否在启动.cs中配置了 MapControllerRoute,如下所示?

endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");

您可能需要使用 cartId 更改 ID 或更改

public IActionResult Index([FromRoute] int? id)

它可以通过路线购物车/索引/1 访问。

https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-3.1

编辑

endpoints.MapControllerRoute(
"Cart",
"Cart/{cartId}",
new { controller = "Cart", action = "Index" }
);

public IActionResult Index([FromRoute] int? cartId)

然后可以使用购物车/1 访问它

你可能想做这样的事情

[HttpGet]
public IActionResult Index([FromQuery] int cartId)
{
// Your code here
}

[HttpGet]
[Route("/yourroutehere/{id:int}")]
public IActionResult Index([FromQuery] int cartId)
{
// Your code here

就个人而言,我不会使您的int成为可为空的项目,但这应该使其对您有用

相关内容

  • 没有找到相关文章

最新更新