首页 > 解决方案 > 如何将 ViewData 值分配给 JavaScript 变量?

问题描述

我正在尝试将位于控制器中的 ViewData 的值分配给前端的 JavaScript 变量;然后将该变量添加到 AJAX URL API 调用。

这是我到目前为止所拥有的:

  1. 控制器
public ActionResult Index()
            {
                ViewData["xTokenBackEnd"] = "IAMATOKEN";
                return View();
            }
  1. 索引.cshtml
    var xTokenFrontEnd = @Html.Raw(Json.Encode(ViewData["xTokenBackEnd"]));
    $.ajax({
                    type: 'GET',
                    url: 'https:&token=' + xTokenFrontEnd,
                    dataType: 'json'
                }).done(function (result) {})

运行应用程序时,我可以看到变量的字符串位于 URL 的末尾,即https:&token=IAMATOKEN,我仍然没有通过 ajax 接收任何内容。很奇怪,因为该值位于 URL 的末尾,但几乎就好像它没有任何实际值一样。也许我需要进行转换?如果我取出变量 xTokenFrontEnd 并输入实际值 IAMTOKEN 那么一切正常,所以我认为错误在于我将 xTokenFrontEnd 添加到 URL 末尾的方式,但不确定。关于如何解决这个问题的任何想法?

标签: javascriptajaxasp.net-mvcmodel-view-controllerasp.net-mvc-5

解决方案


在您查看获取值并分配给变量 - 例如:

string token = ViewData["xTokenBackEnd"];

然后使用此变量示例创建隐藏字段:

@Html.Hidden("hfToken", @token)

然后你可以从 jquery 调用这个值:

$('#hfToken').val();

最后在ajax调用中使用这个值


推荐阅读