Reputation: 53
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
Upvotes: 5
Views: 19064
Reputation: 26930
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
}
Upvotes: 10
Reputation: 21485
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.
Upvotes: 4