Access ViewBag in JS file - Asp.net MVC
Asked Answered
A

2

5

I have one Viewbag. I have fill that viewbag value from server side in Action result method. I need to access this Viewbag value in Js file. I have access this Viewbag in *.cshl page properly. Here below shown my sample code,

Var objMode = '@ViewBag.Mode'; //Written in *.cshtml page.

but i need to access this value like above syntax in *.js file.

Thanks, Nirav Parikh

Atcliffe answered 26/3, 2013 at 11:43 Comment(0)
C
9

You can't. You can write ViewBag value in hidden input and then read it from js file:

<input type="hidden" value="@ViewBag.Mode" id="mode" />

JS file:

var mode = document.getElementById('mode').value;

EDIT: Another option:

<script src="..." type="text/javascript" onload="InitMyScript('@ViewBag.Mode')"></script>

JS file:

function InitMyScript(mode){
   //other code here
}
Coppersmith answered 26/3, 2013 at 11:45 Comment(0)
B
4

You can't reference ViewBag or other context items in included script files because those are served as static files and not processed on the server (if you need, this can be worked around by serving a View with the content type of JavaScript).

You need to put the value in your view as JS variable:

<script type="text/javascript">
    // the object is only required if you want a nice syntax for multiple values.
    if (!window.ViewBag) window.ViewBag = {};
    window.ViewBag.Mode = @Html.Raw(Json.Encode(this.ViewBag.Mode));
</script>

Now you can reference it in your script file.

Bluepoint answered 26/3, 2013 at 11:46 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.