簡體   English   中英

我如何從 JS 訪問 ViewBag

[英]How do I access ViewBag from JS

我嘗試過的方法。

通過瀏覽器查看 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();

如果您使用的是 razor 引擎模板,請執行以下操作

在你看來寫:

<script> var myJsVariable = '@ViewBag.MyVariable' </script>

更新:更合適的方法是在主布局上定義一組配置,例如 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>

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

<script>
  myProduct.fullUrl = AppConfig.awsUrl + myProduct.path;
  alert(myProduct.fullUrl);
</script>

嘗試: var cc = @Html.Raw(Json.Encode(ViewBag.CC)

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

</script>

您可以像這樣在 javascript 中使用 ViewBag.PropertyName。

ViewBag服務器端代碼。
Javascript客戶端代碼。

你無法真正將它們聯系起來。

你可以這樣做:

var x = $('#' + '@(ViewBag.CC)').val();

但它會在服務器上被解析,所以你並沒有真正連接它們。

您可以通過這樣做來實現解決方案:

JavaScript:

var myValue = document.getElementById("@(ViewBag.CC)").value;

或者如果你想使用jQuery ,那么:

jQuery

var myValue = $('#' + '@(ViewBag.CC)').val();

現有的解決方案都不適合我。 這是我發現確實有效的另一個解決方案:

Controller:

TempData["SuccessMessage"] = "your message here";

看法:

let msg = '@TempData["SuccessMessage"]';

試試這個:

HTML 中的任意位置: <input hidden value=@ViewBag.CC id="CC_id" />

在 JS 中: var CC= document.getElementById("CC_id").value.toString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM