首页 > 解决方案 > 如何从用户获取输入值,然后发送到 ASP.NET MVC 中的 2 个不同的控制器?

问题描述

我正在创建一个电子商务网站。我想创建 2 个按钮add to cartbuy now如下所示:

当我按下add to cart产品然后添加到购物车并选择数量。我曾经form这样做如下

@using(Html.BeginForm("add_to_cart","Home",new {productId=Model.id_xe},FormMethod.Post)){
                    <input type="number" id="quantity" name="quantity" min="1" value="1"/>

                    <button type="submit">Add to cart</button>
                }

当我提交时,add_to_cart将执行操作,其余的我保证没问题

当我按下按钮时,它只是在控制器中Add to cart执行操作。我想创建按钮从上面的输入中获取数量,然后显示该购物车的信息add_to_cartHomebuy nowname=quantityAdd to cart

我想问的主要目的是,是否可以创建buy now仍然从上面的输入标签中获取价值的按钮,<input type="number" id="quantity" name="quantity" min="1" value="1"/>然后 Add to cart显示该购物车的信息

如果你们有任何方法可以帮助我创建buy now按钮,请告诉我。

标签: c#asp.net-mvc

解决方案


有一种方法可以确定按下哪个按钮来发布表单。在add_to_cart操作中,您可以检查。将按钮更改为以下内容:

@using(Html.BeginForm("add_to_cart","Home",new {productId=Model.id_xe},FormMethod.Post)){
    <input type="number" id="quantity" name="quantity"/>
    <button type="submit" name="addToCart" value="btnAdd">Add to cart</button>
    <button type="submit" name="buyNow" value="btnBuy">Buy Now</button>
}

然后在行动中:

public ActionResult add_to_cart(string button)
{
    //Add the item to the cart here//

    if (button == "addToCart"){
        //return ajax or view result as you have now
    }

    if (button == "buyNow"){
        return RedirectToAction(“~/CartControllerName/CartViewActionName”);
    }
}

更新: 以上假设您的number输入字段已正确填充。如果没有,则编写以下代码以根据下拉列表的选择更改动态设置值:

$(document).ready(function () {

    $('#qtyDDL').on('change', function () {
        var selectedVal = $.trim($("#qtyDDL:selected").text()); 
        $("#quantity").val(selectedVal );
    });
});

qtyDDL是下拉列表的假定 ID。


推荐阅读