如何从JS访问ViewBag

Doo*_*ght 30 javascript c# asp.net viewbag asp.net-mvc-3

我试过的方法.

通过浏览器查看JS,@ViewBag.CC只是空白......(缺少)

        var c = "#" + "@ViewBag.CC";
        var d = $("#" + "@ViewBag.CC").value;
        var e = $("#" + "@ViewBag.CC").val();

        var c = "@ViewBag.CC";
        var d = $("@ViewBag.CC").value;
        var e = $("@ViewBag.CC").val();
Run Code Online (Sandbox Code Playgroud)

amd*_*amd 64

如果您使用的是剃刀引擎模板,请执行以下操作

在你的视图中写道:

<script> var myJsVariable = '@ViewBag.MyVariable' </script>
Run Code Online (Sandbox Code Playgroud)

更新: 更合适的方法是在主布局上定义一组配置,例如base url,facebook API Key,Amazon S3 base URL等...```

<head>
 <script>
   var AppConfig = @Html.Raw(Json.Encode(new {
    baseUrl: Url.Content("~"),
    fbApi: "get it from db",
    awsUrl: "get it from db"
   }));
 </script>
</head>
Run Code Online (Sandbox Code Playgroud)

您可以在JavaScript代码中使用它,如下所示:

<script>
  myProduct.fullUrl = AppConfig.awsUrl + myProduct.path;
  alert(myProduct.fullUrl);
</script>
Run Code Online (Sandbox Code Playgroud)

  • 为什么在`<script>`之前```? (4认同)

ZeN*_*eNo 10

尝试: var cc = @Html.Raw(Json.Encode(ViewBag.CC)


adt*_*adt 6

<script type="text/javascript">
      $(document).ready(function() {
                showWarning('@ViewBag.Message');
      });

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

你可以像这样在javascript中使用ViewBag.PropertyName.