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

时间:2019-06-08 07:21:28

标签: javascript c# asp.net-mvc-4 stored-procedures

在我的Form 3字段中包括一个hidden。,其余值在controller中完美地返回,但是hidden字段中的值未获取。 隐藏字段中的值是使用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");
         }

该值完美地传递给了隐藏字段。我使用警告框进行了检查。我附上了控制器中得到的屏幕截图。 ScreenShot Here

3 个答案:

答案 0 :(得分:0)

getElementsByClassName返回一个数组。

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

答案 1 :(得分:0)

由于您正在使用byclass,因此它会返回一个数组。试试这个

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

但是,如果您有多种产品,那么您是否有一个更好的添加到购物车按钮的选项,可以更好地使用vid-unique_number之类的ID

答案 2 :(得分:0)

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

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

您可以使用className代替id,因为vid出现在您的隐藏字段中,即document.getElementsById("vid").value = vd;

document.querySelector

或者您可以使用document.querySelector('.hiddenid').value = vd;来检索第一个匹配元素。

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

private OnFragmentInteractionListener mListener; public void onNoData() { if (mListener != null) { mListener.onFragmentInteraction(); } } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnFragmentInteractionListener) { mListener = (OnFragmentInteractionListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } public interface OnFragmentInteractionListener { void onFragmentInteraction(); }