GrpSMK Ответов: 2

Как передать id из представления в контроллер в MVC


Я хочу передать данные модели от кнопки к контроллеру.Передан идентификатор кнопки, но возвращается нулевое значение.

Что я уже пробовал:

Детали плана на странице просмотра
<div class="plans">
       
@foreach (var item in Model)
{

        <div class="plan">
            <h3 class="plan-title">@Html.DisplayFor(modelItem => item.Id1)</h3>
            <h3 class="plan-title">@Html.DisplayFor(modelItem => item.Name1)</h3>
            <p class="plan-price">@Html.DisplayFor(modelItem => item.Currency1)@Html.DisplayFor(modelItem => item.Amount1) <span class="plan-unit">@Html.DisplayFor(modelItem => item.IntervalCount1)-@Html.DisplayFor(modelItem => item.Interval1)</span></p>
            <ul class="plan-features">
                <li class="plan-feature">@Html.DisplayFor(modelItem => item.Trial1)-days <span class="plan-feature-name">Trial</span></li>

            </ul>
            @*<h3 class="plan-title">@item.Name</h3>
            
                <p class="plan-price">@item.Currency@(int.Parse(item.Amount) / 100)<span class="plan-unit">per month</span></p>
            <ul class="plan-features">
                <li class="plan-feature">@item.TrialPeriodDays-Days <span class="plan-feature-name">Trial</span></li>

            </ul>*@
      
            
          
    <input type="hidden" name="EmployeeId" id="planid"  value="@item.Id1" />
            <button class="plan-button demo" id="btnSubmit" name="btnSubmit" onclick="test(this)" >Choose Plan</button>

        </div>
}

    </div>


Проверьте форму на странице просмотра
<form id="myForm" action="@Url.Action("SuperOffer", "Home")" method="POST">
   
      
        <input type="hidden" id="stripeToken" name="stripeToken" />
        <input type="hidden" id="stripeEmail" name="stripeEmail" />
        <input type="hidden" id="btnSubmit" name="btnSubmit" />
     
        <script src="https://checkout.stripe.com/checkout.js"></script>
        <script>
            var email = "NotNotSeven@hotmail.com";
            var handler = StripeCheckout.configure({
                key: 'pk_test_77oo7uz7BCoBk2vPq2OvhHLp',
                image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
                token: function (token) {
                    $("#stripeToken").val(token.id);
                    $("#stripeEmail").val(token.email);
                   
                    $("#myForm").submit();
                }
            });
            //var handler = StripeCheckout.configure({
            //    key: "pk_test_77oo7uz7BCoBk2vPq2OvhHLp",
            //    image: "https://stripe.com/img/documentation/checkout/marketplace.png",
            //    name: "Abacus",
            //    description: "Pro Subscription Package",
            //    button: "Submit",
            //    panelLabel: "Subscribe",
            //    allowRememberMe: false
            //});

            @*var el = document.getElementById("SubsID");

            $('el').click(function (e) {
                $.ajax({
                    type: "POST",
                    url: '@Url.Action("Superoffer", "Home")',
                    datatype: "json",
                    traditional: true,
                    success: function (data) {
                    }
                })
                e.preventDefault();
            });*@

            //var CustomerEmail = Session["Email"];
            var el = document.getElementsByClassName("demo");
            for (var i = 0; i < el.length; i++) {
                el[i].addEventListener('click', function (e) {
                   
                    handler.open({
                       
                        email: email
                    });
                    e.preventDefault();
                });
            }
            //document.getElementsByClassName("plan-button").addEventListener('click', function (e) {
            //    handler.open();
            //    e.preventDefault();
            //});
        </script>
        <script>
            function test(btn) {
                $('#hdntemp').remove();
                $('#form').append('<input type="hidden" id="hdntemp" name="btnSubmitValue" value="' + btn.value + '" />');
            }
        </script>
        
        </form>

контроллер

здесь электронная почта и токен идут прямо так мне нужен конкретный идентификатор плана который мы выбираем на странице просмотра
public ActionResult Superoffer(string stripeToken, string stripeEmail, FormCollection form)

Richard Deeming

Попробуйте добавить type="submit" к кнопке.

Karthik_Mahalingam

сколько у него кнопок

GrpSMK

кнопки в цикл "для каждого" настолько динамичен

GrpSMK

Проверьте мой обновленный код.

2 Ответов

Рейтинг:
15

Karthik_Mahalingam

пробовать

<button class="plan-button demo" id="btnSubmit" name="btnSubmit" onclick="test(this)" value="@item.Id1">Choose Plan</button>


function test(btn) {
          $('#hdntemp').remove();
          $('#form').append('<input type="hidden" id="hdntemp" name="btnSubmitValue" value="' + btn.value + '" />');
      }


var dest = form["btnSubmitValue"];


GrpSMK

Не работать.На самом деле,если кнопка нажата, значит, форма выписки открыта, то после заполнения формы выписки нажмите Оплатить, значит, мне нужно передать конкретный идентификатор плана контроллеру.

Karthik_Mahalingam

$('#myform в')

GrpSMK

Огромное спасибо!..

Karthik_Mahalingam

добро пожаловать

Maciej Los

5ед!

Karthik_Mahalingam

Спасибо Мацей

Рейтинг:
1

Atlapure Ambrish

Лучше всего использовать HTML-помощник..
@формат HTML.Actionlink панели(
"Платформы",
"Индекс", / / действие контроллера
"Тест", / / контроллер
новые модели.уникальный идентификатор }, // параметры действия ака маршрута значения, как требуется
new { @class = "css class"}) / / HTML атрибуты по мере необходимости