asp.net - Foreach 循环中 BeginForm() 的 ASP.NET MVC 路由问题
问题描述
首先,如果问题是微不足道的,请原谅我,但对于 ASP.NET,我是一个完全的新手。我只需要通过我的项目,我就完全陷入了困境。
我正在为在线商店准备购物篮功能。可用文章按以下方式列出:
@foreach( var element in Model.all_products )
{
using( Html.BeginForm( "AddToBasket", "Basket", new { id = @Html.DisplayFor( Model=>element.id ), amountInBasket = Html.DisplayFor( Model => element.amountInBasket ) }, FormMethod.Get ) )
{
<tbody>
<tr id="@Html.DisplayFor( Model => element.id )" class="warning">
<th scope="row"> @Html.DisplayFor( Model => element.name )</th>
<td> @Html.DisplayFor( Model => element.price )</td>
<td> @Html.DisplayFor( Model => element.measureUnit )</td>
<td> @Html.TextBoxFor( Model => element.amountInBasket )</td>
<td> <input type="submit" class="btn-success btn" value="Add to basket"></td>
</tr>
</tbody>
} }
在 foreach 循环中,我为商店中可用的每篇文章创建一个表单。每个表单都包含一个提交,用于将给定数量的给定产品 ( element.amountInBasket
) 添加到购物篮。element.id
我的想法是识别(数据库中的文章 id)单击了哪个提交,并将其与element.amountInBasket
BasketController 中的 AddToBasket 方法一起传递。AddToBasket 声明开始如下:
[HttpGet]
public async System.Threading.Tasks.Task<ActionResult> AddToBasket( decimal amountInBasket, int id )
{ ...
现在我的问题是 BeginForm() 生成的 url,比如说 id=2 和 amountInBasket=3,是:
https://localhost:44356/Basket/AddToBasket/2?element.amountInBasket=2
这会导致错误(它指出第二个参数为空)。经过一些尝试,我发现 AddToBasket 方法预期的 url 是:
https://localhost:44356/Basket/AddToBasket/2?amountInBasket=3
所以问题出在“元素”上。我的网址的一部分。一旦我手动删除它,我就达到了我的方法,一切都很完美。
有人可以告诉我如何解决这个问题吗?对我来说,“元素”是否无关紧要。部分从 url 中删除或保留在那里,只有方法被修改以接受它 - 我只需要使用我的方法。
解决方案
改变:
using( Html.BeginForm( "AddToBasket", "Basket", new { id = @Html.DisplayFor( Model=>element.id ), amountInBasket = Html.DisplayFor( Model => element.amountInBasket ) }, FormMethod.Get ) )
对此:
using( Html.BeginForm( "AddToBasket", "Basket", new { id = element.id , amountInBasket = element.amountInBasket }, FormMethod.Get ) )
推荐阅读
- java - 提高部署在 PCF 中的 Spring Boot 应用程序中 Kafka 侦听器的性能
- visual-studio-code - 我的 VS 代码在打开时一直崩溃
- reactjs - React/Redux:使用旧道具渲染组件
- php - REST API 上可能存在或不存在的资源状态代码
- django - 如何在 django-rest-framework 的特定索引中获取数组数据
- java - WebClient 在我设置超时时遇到问题 TimeoutException
- feature-selection - “SelectKBest”对象没有属性“_validate_data”
- linux - 无法在 prometheus 上启用查询日志
- node.js - 仅在字段包含值时才包含字段来优化 GraphQL 查询?
- scala - Data proc 作业因找不到类异常而失败