How do I access ViewBag from JS

asp.net, asp.net-mvc-3, c#, javascript, viewbag

Solution

if you are using razor engine template then do the following

in your view write :

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

UPDATE: A more appropriate approach is to define a set of configuration on the master layout for example, base url, facebook API Key, Amazon S3 base URL, etc ...


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


And you can use it in your JavaScript code as follow:

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

Problem

My attempted methods. Looking at the JS via browser, the `@ViewBag.CC` is just blank... (missing) ``` 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(); ```

Original source