Как получить доступ к ViewBag из JS

мои попытки методов.

глядя на JS через браузер,@ViewBag.CC просто пусто... (отсутствует)

        var c = "#" + "@ViewBag.CC";
        var d = $("#" + "@ViewBag.CC").value;
        var e = $("#" + "@ViewBag.CC").val();

        var c = "@ViewBag.CC";
        var d = $("@ViewBag.CC").value;
        var e = $("@ViewBag.CC").val();

5 ответов


Если вы используете шаблон Razor engine, выполните следующие действия

на ваш взгляд написать :

<script> var myJsVariable = '@ViewBag.MyVariable' </script>

обновление: Более подходящим подходом является определение набора конфигурации в мастер-макете, например, базовый url, ключ API facebook, базовый URL Amazon S3 и т. д...``

<head>
 <script>
   var AppConfig = @Html.Raw(Json.Encode(new {
    baseUrl: Url.Content("~"),
    fbApi: "get it from db",
    awsUrl: "get it from db"
   }));
 </script>
</head>

и вы можете использовать его в своем коде JavaScript следующим образом:

<script>
  myProduct.fullUrl = AppConfig.awsUrl + myProduct.path;
  alert(myProduct.fullUrl);
</script>

попробуй: var cc = @Html.Raw(Json.Encode(ViewBag.CC)


<script type="text/javascript">
      $(document).ready(function() {
                showWarning('@ViewBag.Message');
      });

</script>

вы можете использовать ViewBag.PropertyName в javascript, как это.


ViewBag is сервер код.
Javascript и стороне клиента код.

нельзя действительно соединить их.

вы можете сделать что-то вроде этого:

var x = $('#' + '@(ViewBag.CC)').val();

но он будет проанализирован на сервере, поэтому вы на самом деле не подключали их.


вы можете достичь решения, сделав это:

JavaScript:

var myValue = document.getElementById("@(ViewBag.CC)").value;

или если вы хотите использовать jQuery, тогда:

jQuery

var myValue = $('#' + '@(ViewBag.CC)').val();