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

Vs’12 asp.net C#MVC4 – Int.Appl.Template EF Code First

这是我非常简单的Script

  $('#Add').click(function (e) { var val = @ViewBag.ForSection; alert(val); });  

根据例子,我想在我的script设置一个变量或者使用一个Viewbag. Model.

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

我试过的其他事情:

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

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

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

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

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

  

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

 var val = '@ViewBag.ForSection'; 

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

 var val = parseInt(@ViewBag.ForSection); 

试试这个方法

  

谢谢

使用单引号( ' ):

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

当你这样做的时候

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