codegeekalpha Ответов: 1

Передача ретривированных данных от одного метода действия контроллера к другому методу действия контроллера


Я получил дисконтированную цену с помощью метода действия GetDis и выведите его на экран.

Я хочу передать значение дисконтированной цены другому методу действия . так что я могу использовать его в контроллере . Как я могу передать значение для представления контроллеру?

<pre>@foreach (var item in Model) {
    <tr data-productid="@item.Id">
        <td>
            @Html.DisplayFor(modelItem => item.ProductName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductPrice, new { @id = "check" })
        </td>
       
            <td>

               @Html.DropDownList("Status", new List<SelectListItem>
                 {
                    new SelectListItem{ Text="Student Discount", Value = "1" },
                    new SelectListItem{ Text="Loyalty Discount", Value = "0" }
                 }, "Please select discount", new { @class="ddlStatus" })
                
            </td>
       

        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

</table>
<div class="clearfix">
    <div class="pull-right">
        <label>Discount: <span id="lblDiscountAmount"></span></label>
    </div>
</div>


@section scripts{
    <script>
        
        $('.ddlStatus').change(function () {
            var val = $(this).val();
            var productId = $(this).parent('td').parent('tr').attr('data-productid')
            ChangeDis(val, productId);
        });
        function ChangeDis(val, productId) {
           
            $.ajax({
                url: '/Products/GetDis',
                data: {
                    discount: val,
                    productId : productId
                },
                success: function (data) {
                   $('#lblDiscountAmount').text(data);

                }
            });
        }
    </script>
}


Это значение дисконтированной цены добавляется на
<label>Discount: <span id="lblDiscountAmount"></span></label>
Я хочу отправить его другому контроллеру в каком-то методе действия. как я могу это сделать?

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

Я показал сниженную цену в представлении . и хотите передать значение discouted price другому контроллеру в методе действия.

1 Ответов

Рейтинг:
7

Richard Deeming

Если вы хотите отправить значение вместе с формой, то вам нужно добавить скрытое поле:

<label>Discount: <span id="lblDiscountAmount"></span></label>
<input type="hidden" name="DiscountAmount" id="DiscountAmount" />
success: function (data) {
    $('#lblDiscountAmount').text(data);
    $('#DiscountAmount').val(data);
}

Если вы хотите передать его по ссылке действия, то вам нужно будет идентифицировать эти ссылки и передать сумму скидки по URL-адресу:
@Html.ActionLink("Edit", "Edit", new { id = item.Id }, new { @class = "--js-pass-discount" }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }, new { @class = "--js-pass-discount" }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
$(document).on("click", "a.--js-pass-discount", function(e){
    var discountAmount = $('#lblDiscountAmount').text();
    if (!discountAmount) { return; }
    
    var url = this.href;
    var i = url.indexOf('?');
    url = url + (-1 === i ? '?' : '&') + 'discountAmount=' + encodeURIComponent(discountAmount);
    window.location.href = url;

    e.preventDefault();
});