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

2 Answers 2

10

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
}
Sign up to request clarification or add additional context in comments.

Comments

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.