Почему не один элемент формы не возвращает значение в контроллере? - PullRequest
0 голосов
/ 08 июня 2019

В моей Форме 3 поля, включая скрытые. И остальные значения прекрасно возвращаются в контроллер, но значение в скрытом поле не получает. значение в скрытом поле передается из тега привязки с помощью сценария 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 голосов
/ 08 июня 2019

Поскольку вы используете byclass, он возвращает массив.попробуйте это

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

Но если у вас есть несколько продуктов, то есть ли у вас кнопка добавления в корзину лучше для используемого идентификатора, например vid-unique_number

0 голосов
/ 08 июня 2019

getElementsByClassName возвращает массив. Доступ к одному элементу с помощью индекса массива.

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

Вместо className вы можете использовать id, поскольку он присутствует в скрытом поле i: e vid.

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

или вы можете использовать document.querySelector, который будет извлекать первый элемент соответствия.

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

или

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

0 голосов
/ 08 июня 2019

getElementsByClassName возвращает массив.

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