如何在脚本标记中获取模型或Viewbag变量

Don*_*yle 19 asp.net-mvc jquery razor asp.net-mvc-4

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

这是我的非常简单 Script

<script class="TractsScript">

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

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

     });
</script>
Run Code Online (Sandbox Code Playgroud)

根据例子,我想简单地在我script或USE中设置变量a Viewbag.Model.

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

我试过的其他事情:

var model = @Html.Raw(Json.Encode(Model))
alert(model.Sections);
alert(@ViewBag.ForSection);
Run Code Online (Sandbox Code Playgroud)

Fal*_*als 23

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

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

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

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> 
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 22

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

var val = '@ViewBag.ForSection';
Run Code Online (Sandbox Code Playgroud)

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

var val = parseInt(@ViewBag.ForSection);
Run Code Online (Sandbox Code Playgroud)


小智 5

try this method

<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>
Run Code Online (Sandbox Code Playgroud)

Thanks