如何在ASP.NET MVC C#中基于下拉列表选择在操作链接上传递ID参数

dpiehjr4  于 2023-03-04  发布在  .NET
关注(0)|答案(1)|浏览(155)

我好像搞不清楚这个问题。我有一个视图页面,用于向订单添加产品。有一个下拉列表,您可以在其中选择要添加的产品。一旦您选择了一个产品,我有一个onchange函数,它基本上将Product ID的值插入到一个隐藏的输入字段中。我遇到的问题是,我有一个指向不同控制器和不同型号的操作链接,这样我就可以'当我使用id参数时,不要只使用Model.ProductID。是否有一种方法可以获得输入字段的值(本质上是所选产品的ProductID值),并将其用作actionlink上的id参数?actionlink打开一个产品视图,其中显示产品的图片和库存数量。但当我单击该链接时,它没有获得所选产品的id值。
下面是我的查看页面的相关部分:

<div class="form-group">
<label class="lbl3">Product:</label><span class="required">&nbsp;*</span><label class="ddl1">@Html.DropDownListFor(model => model.ProductID, ViewBag.ProductID as SelectList, "--Select a Product--", new { @class = "form-control prod-ctl", @onChange = "selectedText(this)" })</label>
<input type="hidden" id="txt" name="poProduct" required />
<label class="lbl2">Qty Ordered:</label><span class="required">&nbsp;*</span><input type="text" inputmode="numeric" class="col-md-3 form-control qty-ctl" name="poQtyOrdered" id="poQtyOrdered" required />
<label class="chk-link"><a class='prod-modal chk-stock' href="@Url.Action("AmtInStock", "Products", new { id = "THIS IS WHERE IM STUCK" })"><span class="fa solid fa-search">&nbsp;<u>Check Stock</u></span></a></label>
<script>
    function selectedText(ddlitem) {
        var selvalue = ddlitem.value;
        var seltext = ddlitem.options[ddlitem.selectedIndex].innerHTML;
        $('#txt').val(selvalue);
    }
</script>

下面是我的actionlink控制器:

public ActionResult AmtInStock(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        var product = db.Products.Find(id);
        if (product == null)
        {
            return HttpNotFound();
        }
        return PartialView("AmtInStock", product);
    }

最后,这里是主页面的控制器中的ddl代码:

ViewBag.ProductID = new SelectList(db.Products, "ProductID", "Product_Code");

因此,我需要能够在下拉列表中选择一个产品,如果我单击actionlink,我需要能够获得所选项目的值,以传入id参数。
谢谢基普·M。

nue99wik

nue99wik1#

所以我终于能够弄清楚如何做到这一点,并让它完美地工作。这个方法不需要一个post方法。它会让你使用下拉列表选择的id值在行动链接。我不得不使用一个javascript函数,基本上手动更改href属性,以包括在末尾的id值。我不得不给予行动链接一个id,我命名为“chkID”。然后,每当下拉列表选项发生变化时,它就会调用该元素id并使用新的选项id值更改href Url Action。
查看页面:

<div class="form-group">
    <label class="lbl3">Product:</label><span class="required">&nbsp;* 
    </span><label class="ddl1">@Html.DropDownListFor(model => model.ProductID, ViewBag.ProductID as SelectList, "--Select a Product--", new { id = "ddlID", @class = "form-control prod-ctl", @onChange = "selectedText(this)" })</label>
    <a class="prod-modal chk-stock" href="@Url.Action("ProductLookup", "ProductOrders")" id="chkID"><span class="fa solid fa-search">&nbsp;<u>Check Availability</u></span></a>
    <input type="hidden" id="txt" name="poProduct" required />                               
  </div>
  <div class="form-group">
    <label class="lbl2">Qty Ordered:</label><span class="required">&nbsp;* 
    </span><input type="text" inputmode="numeric" class="col-md-3 form control qty-ctl" name="poQtyOrdered" id="poQtyOrdered" required />
  </div>
  <div class="form-group">
    <input type="submit" value="Add To Order" class="btn btn-info col-md-3" />
  </div>

  <script type="text/javascript">
      function selectedText(ddlitem) {
         var selvalue = ddlitem.value;
         var seltext = ddlitem.options[ddlitem.selectedIndex].innerHTML;
         $('#txt').val(selvalue);

         var checkID = document.getElementById("chkID");
         checkID.setAttribute("href", '@Url.Action("AmtInStock", "Products")/' + selvalue);
      }
  </script>

相关问题