Asp.net mvc 2 MVC2试图基于具有动态名称的文本框将多个参数传递给ActionResult

Asp.net mvc 2 MVC2试图基于具有动态名称的文本框将多个参数传递给ActionResult,asp.net-mvc-2,button,parameters,textbox,actionresult,Asp.net Mvc 2,Button,Parameters,Textbox,Actionresult,我正在尝试为添加到购物车的项目数量实现数量选择器 我有一个文本框,其中包含目录中每一行项目的动态名称。每行有一个“添加到购物车”按钮 如果我在文本框中输入所需数量并单击“添加到购物车”按钮,我希望所选项目的输入数量添加到我的购物车中 将新数量添加到购物车数据库的控制器操作如下: public ActionResult AddToCart(int productID, int quant) { repository.AddItemToOrder(productID, quant);

我正在尝试为添加到购物车的项目数量实现数量选择器

我有一个文本框,其中包含目录中每一行项目的动态名称。每行有一个“添加到购物车”按钮

如果我在文本框中输入所需数量并单击“添加到购物车”按钮,我希望所选项目的输入数量添加到我的购物车中

将新数量添加到购物车数据库的控制器操作如下:

public ActionResult AddToCart(int productID, int quant)
{
    repository.AddItemToOrder(productID, quant);
    return RedirectToAction("Browse");
}
我知道调用“浏览”操作来再次呈现页面并不是最有效的方法。我以后会解释的

我的问题是:如何使用这两个参数调用“AddToCart”控制器操作

我能够得到一个使用1个参数的版本。在这种情况下,删除了上述控制器操作中的第二个参数quant

我的观点是:

<input type="button" onclick="document.location.href = '<%: Url.Action("AddToCart") %>'+'?productID=<%: item.ProductID %>'  " value="Add to Cart" />

虽然这是可行的,我需要能够参考文本框的数量

我尝试了下一行,它在我的视图中包含多个参数:

<input type="button" onclick="document.location.href = '<%: Url.Action("AddToCart") %>'+'?productID=<%: item.ProductID %>'+'?quant=<%: item.ProductID %>'  " value="Add to Cart" />

分配给“quant”的值与分配给“productID”的值相同。我这样做只是为了让某些东西正常工作。一旦它开始工作,我计划使用具有动态名称的文本框的值。(我也需要一些帮助)

当我测试并单击该行的按钮时,我收到以下错误:

参数字典包含“OER.Controllers.eCommerceController”中方法“System.Web.Mvc.ActionResult AddToCart2(Int32,Int32)”的不可为空类型“System.Int32”的参数“productID”的空条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。
参数名称:参数

在查询字符串中的变量之间需要一个符号,
&
,而不是另一个
。。。简单的打字错误

/AddToCart?productId=3&quant=1
如果您想给
quant
一个默认值,因此它并不总是必需的,您可以将操作方法更改为类似以下内容:

public ActionResult AddToCart(int productID, int quant = 1)
根据您的评论,我将设置一个表单,按钮将提交,而不是将其全部压缩到一个
onclick

@using(Html.BeginForm("AddToCart")) {
    @Html.Hidden("productId", item.ProductId)
    @Html.Input("quant")
    <input type="submit" value="Add to Cart" />
}
你不想要吗

在您提交的表单中


如果您正在提交表单元素,MVC将自动提取所需的信息,并根据
名称
字段(或
id
)将其分配给代码隐藏中的等效变量。
value
字段是分配给相应变量的值。

我更改了代码以使用&但仍然有相同的错误。我尝试了另一种使用ActionLink的方法。这让我更接近了,因为它似乎接受了第一个参数,但不接受“quant”参数。我得到以下错误:参数字典包含“OER.Controllers.eCommerceController”中方法“System.Web.Mvc.ActionResult AddToCart2(Int32,Int32)”的不可空类型“System.Int32”的参数“quant”的空条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。参数名称:参数ActionLink是:我一定有刷新问题。机器正在运转。剩下的唯一问题是如何获取分配给quant参数的TextBox值。TextBox由以下人员创建:示例id为:txtlinequantity-200
$('.addToCartLink').click(function() {  // All the "add to cart" links would have this class
    // Pull the product ID (just an example)
    var productId = $(this).attr('data-id');
    // Set the quantity
    var quantity = $('#txtlinequantity-'+productId).val();
    // Possible validation here
    ...
    // Hit the action method
    window.location = '/AddToCart?productId='+productId+'&quant='+quantity;
});