Подтвердить что ты не робот

Как добраться до переменных Model или Viewbag в теге Script

Vs'12 asp.net С# MVC4 - Int.Appl.Template EF Code First

Вот мой очень простой Script

<script class="TractsScript">

     $('#Add').click(function (e) {

         var val = @ViewBag.ForSection;
         alert(val);

     });
</script>

В качестве примера я хочу просто установить переменную в моем Script или USE a Viewbag. или Model.

Мне не удалось найти ответ на любом из следующих форумов: StckTrace1, StackTraceBetterAnswer

Другие вещи, которые я пробовал:

var model = @Html.Raw(Json.Encode(Model))
alert(model.Sections);
alert(@ViewBag.ForSection);
4b9b3361

Ответ 1

Вы можете сделать это, предоставив Json или любую другую переменную:

1) Например, в контроллере вы можете использовать Json.NET для обеспечения Json для ViewBag:

ViewBag.Number = 10;
ViewBag.FooObj = JsonConvert.SerializeObject(new Foo { Text = "Im a foo." });

2) В View поместите script как в нижней части страницы.

<script type="text/javascript">
    var number = parseInt(@ViewBag.Number); //Accessing the number from the ViewBag
    alert("Number is: " + number);
    var model = @Html.Raw(@ViewBag.FooObj); //Accessing the Json Object from ViewBag
    alert("Text is: " + model.Text);
</script> 

Ответ 2

Что вы должны работать. Это зависит от типа данных, которые вы устанавливаете, т.е. Если это строковое значение, необходимо убедиться, что оно в кавычках, например.

var val = '@ViewBag.ForSection';

Если это целое число, вам нужно проанализировать его как один i.e.

var val = parseInt(@ViewBag.ForSection);

Ответ 3

попробуйте этот метод

<script type="text/javascript">

    function set(value) {
        return value;
    }

    alert(set(@Html.Raw(Json.Encode(Model.Message)))); // Message set from controller
    alert(set(@Html.Raw(Json.Encode(ViewBag.UrMessage))));

</script>

Спасибо

Ответ 4

Используйте одинарные кавычки ('):

var val = '@ViewBag.ForSection';
alert(val);

Ответ 5

Когда вы делаете это

var model = @Html.Raw(Json.Encode(Model));

Вероятно, вы получаете строку JSON, а не объект JavaScript.

Вам нужно разобрать его для объекта:

var model = JSON.parse(model); //or $.parseJSON() since if jQuery is included
console.log(model.Sections);