23

Vs'12 asp.net C# MVC4 - Int.Appl.Template EF 代码优先

这是我非常简单的Script

<script class="TractsScript">

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

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

     });
</script>

例如,我想简单地在 my scriptor USE a Viewbag.or中设置一个变量Model.

我无法在以下任何论坛中找到答案:StckTrace1StackTraceBetterAnswer

我尝试过的其他事情:

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

5 回答 5

29

你所拥有的应该工作。这取决于您设置的数据类型,即如果它是一个字符串值,您需要确保它在引号中,例如

var val = '@ViewBag.ForSection';

如果它是一个整数,则需要将其解析为一个,即

var val = parseInt(@ViewBag.ForSection);
于 2013-09-18T12:54:08.710 回答
26

您可以这样做,提供 Json 或任何其他变量:

1)例如,在控制器中,您可以使用Json.NET提供JsonViewBag

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

2) 在 中View,将这样的脚本放在页面底部。

<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> 
于 2013-09-18T13:10:13.300 回答
5

试试这个方法

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

谢谢

于 2014-08-27T06:54:18.420 回答
2

使用单引号 ( '):

var val = '@ViewBag.ForSection';
alert(val);
于 2017-01-06T21:46:53.777 回答
0

当你这样做时

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);
于 2013-09-18T12:58:48.200 回答