为什么不是单个表单元素在控制器中不返回值?

Why isn't a single form element is not returning value in the controller?

在我的 Form 3 字段中,包括 hidden.and 其余值在控制器中完全 returns,但隐藏字段中的值未获取。 隐藏字段中的值是使用 java 脚本从锚标记传递的。 隐藏字段的值从这里传递

<a href="#" onclick="func(@c.vid)"  data-toggle="modal" data-target="#myModal3" class="modalLink">

Javascript代码传值是

function func(vd){
        document.getElementsByClassName("hiddenid").value = vd;


    }

表格是这样的

<form action="/Home/AddToCart" method="post">
                                <input type="hidden" id="vid" name="vid" class="hiddenid" />
                            <div class="styled-input agile-styled-input-top">

                                <input type="text" placeholder="Name" name="name" id="name"required>
                            </div>
                            <div class="styled-input">

                        <input type="text" placeholder="Star Name" onclick="showsss()" name="star" id="star" required>
                            </div>

                            <input type="submit"   value="Add To Cart">

                                </form>

控制器

[HttpPost]
         public ActionResult AddToCart(cart data)
         {
             userService.AddToCart(data);
             ViewBag.p = userService;
             return RedirectToAction("Temple");
         }

值正在传递到隐藏字段 perfectly.i 使用警报 box.am 检查并附上控制器中内容的屏幕截图。

getElementsByClassNamereturn一个数组。

    function func(vd){
        document.getElementsByClassName("hiddenid")[0].value = vd;
    }

由于您正在使用 byclass 它的 return 数组。试试这个

document.getElementsByClassName("hiddenid")[0].value = vd;

但是如果你有多个产品,那么你有一个添加到购物车按钮更好地使用像 vid-unique_number

这样的 id

getElementsByClassName returns 一个数组。使用数组索引访问单个元素。

document.getElementsByClassName("hiddenid")[0].value = vd;

您可以使用 id 而不是 className,因为它存在于您的隐藏字段中 i:e vid.

document.getElementsById("vid").value = vd;

或者您可以使用 document.querySelector,它将检索第一个匹配元素。

document.querySelector('.hiddenid').value = vd;

document.querySelector('#vid').value = vd;