/ / Access ViewBag w pliku JS - Asp.net MVC - javascript, asp.net-mvc, viewbag

Dostęp do ViewBag w pliku JS - Asp.net MVC - javascript, asp.net-mvc, viewbag

Mam jedną Viewbag. Podałem tę wartość viewbag od strony serwera w metodzie wyniku akcji. Potrzebuję uzyskać dostęp do tej wartości Viewbag w pliku Js. Mam poprawny dostęp do tej strony Viewbag na stronie * .cshl. Oto poniżej mój przykładowy kod,

Var objMode = "@ViewBag.Mode"; // Napisane na stronie * .cshtml.

ale muszę uzyskać dostęp do tej wartości, jak powyższa składnia w pliku * .js.

Dzięki, Nirav Parikh

Odpowiedzi:

7 dla odpowiedzi № 1

Możesz „t. Możesz pisać ViewBag wartość w ukrytym wejściu, a następnie odczytać z pliku js:

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

Plik JS:

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

EDYTOWAĆ: Inna opcja:

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

Plik JS:

function InitMyScript(mode){
//other code here
}

4 dla odpowiedzi nr 2

Nie można odwoływać się do ViewBag ani innego kontekstuelementy w dołączonych plikach skryptowych, ponieważ są one podawane jako pliki statyczne i nie są przetwarzane na serwerze (w razie potrzeby można to obejść, udostępniając widok z typem treści JavaScript).

Musisz podać wartość w swoim widoku jako zmienną JS:

<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>

Teraz możesz odwoływać się do niego w pliku skryptu.