создайте файл generi c js для использования во всех представлениях - PullRequest
0 голосов
/ 12 апреля 2020

Таким образом, есть сценарий, который я написал в каждом представлении, чтобы показать статус уведомления в соответствии с указанным c результатом. Я хочу сделать это в одном js файле, а затем просто вызывать его в каждом представлении. проблема в @TempData не может быть прочитана в файле js или не видна вне файлов .cshtml. Так что я должен сделать, чтобы избежать этой избыточности?

<script>

     $(function () {

     var msg = "@(TempData["error"] as string)";
        if (msg !== "") {

            toastr.error('@TempData["error"]');
            toastr.options = {

                "positionClass": "toast-bottom-right"

            }
        }

    });

     $(function(){
     var msg = "@(TempData["success"] as string)";
        if (msg !== "") {

            toastr.success('@TempData["success"]');
            toastr.options = {

                "positionClass": "toast-bottom-right"

            }
        }

    });

    $(function(){
     var msg = "@(TempData["warning"] as string)";
        if (msg !== "") {

            toastr.warning('@TempData["warning"]');
            toastr.options = {

                "positionClass": "toast-bottom-right"

            }
        }
    });

</script>

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

TempData - это тип словаря, который предназначен для использования в последующем запросе. Вы можете сохранить значения TempData в третьем последовательном запросе с помощью TempData.Keep () enter image description here

В вашем случае TempData не подходит. Поскольку вы используете. NET MVC framework, вы можете написать что-нибудь на своей обычной странице макета, как показано ниже, перед Renderbody (). Передайте ваше сообщение с помощью ViewBag, и оно будет отображаться на всех страницах, поскольку все представления будут расширять общий вид макета.

  <div class="col-md-12 sidebar-offcanvas" id="bodyContent" role="navigation">
            <br />
            <div class="customMessage text-center">
                @if (ViewBag.ErrorMessage != null)
                {
                    <div class="alert alert-danger">
                        <a class="close" data-dismiss="alert">×</a>
                        <strong>Error!</strong> @ViewBag.ErrorMessage
                    </div>
                }

                @if (ViewBag.SuccessMessage != null)
                {
                    <div class="alert alert-success">
                        <a class="close" data-dismiss="alert">×</a>
                        <strong>Success!</strong> @ViewBag.SuccessMessage
                    </div>
                }

                @if (ViewBag.InfoMessage != null)
                {
                    <div class="alert alert-info">
                        <a class="close" data-dismiss="alert">×</a>
                        <strong>Info! </strong>@ViewBag.InfoMessage
                    </div>
                }

                @if (ViewBag.WarningMessage != null)
                {
                    <div class="alert alert-warning">
                        <a class="close" data-dismiss="alert">×</a>
                        <strong>Warning! </strong>@ViewBag.WarningMessage
                    </div>
                }
            </div>
0 голосов
/ 12 апреля 2020

Создать функцию в основном файле. js, как показано ниже, и вызвать функцию, передав сообщение и код из cs html, как показано ниже

 function showNotification(messageType, message){
    toastr.options = {
            "positionClass": "toast-bottom-right"
        }
    if(messageType == 1)       //  warning
    {
        toastr.warning(message);            
    }
    else if(messageType == 2)   //  success
        toastr.success(message);
}
...