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 № 1Moż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.