Открыть модальный диалог в блоке catch - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть этот код в моем действии

var singedUser = HttpContext.User.Identity.Name;

        try
        {
            _purchaseService.PurchaseCard(singedUser, cardName);
        }
        catch
        {

        }

И я хочу, чтобы это открылось ТОЛЬКО, если код входит в блок catch

<div id="Modal" class="modal fade" role="dialog">
    <div class="modal-dialog">

        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Purchasing Card</h4>
            </div>
            <div class="modal-body">
                <p>You have unsufficient funds!</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
            </div>
        </div>

    </div>
</div>

А вот и моя кнопка

<a class="button btn btn-success" 
    asp-controller="Store" asp-action="Buy" 
    asp-route-data ="@card.Name">Buy (@card.Price coins)</a>

Буду признателен, если кто-нибудь скажет мне, как я могу открыть это диалоговое окно на той же странице, только если код входит в блок catch

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы также можете использовать вызов ajax, чтобы вернуть частичное представление и добавить его в DOM.Настройка модального режима для загрузки частичного представления на самом деле довольно проста:

  1. Создать частичное представление: _ModalContent.cshtml

    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">Purchasing Card</h4>
        </div>
        <div class="modal-body">
            <p>You have unsufficient funds!</p>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
        </div>
    </div>
    
  2. ИзменитьВаша индексная страница:

    <a id="button1" class="button btn btn-success" 
    asp-controller="Store" asp-action="Buy" 
    asp-route-data ="@card.Name">Buy (@card.Price coins)</a>
    
    <div id="myModal"></div>
    
    @section Scripts{
    
    <script type="text/javascript">
    $(function () {
        $.ajaxSetup({ cache: false });
        $("#button1").on("click", function (e) {
            $('#myModal').load(this.href, function () {
                $('#Modal').modal({
                    keyboard: true
                }, 'show');
            });
            return false;
        });
    });
    </script>
    }
    
  3. Функция контроллера:

    public IActionResult buy(string data)
    {
        .....
        {
    
            return PartialView("_ModalContent");
        }
    }
    
0 голосов
/ 11 ноября 2018

Я бы передавал переменную через ViewBag на контроллер / действие. Примерно так в контроллере:

            var singedUser = HttpContext.User.Identity.Name;

        try
        {
            _purchaseService.PurchaseCard(singedUser, cardName);
        }
        catch
        {
            ViewBag.ShowModal = false;
        }

Затем включите или отключите JQuery для отображения модального режима в разделе сценариев представления:

@section Scripts{
<script>
    @if(ViewBag.ShowModal == true){
        @Html.Raw("$('#Modal').modal('show');");
    }
</script>
}
...