【问题标题】:ASP NET MVC array in controller to client side array控制器中的 ASP NET MVC 数组到客户端数组
【发布时间】:2013-07-09 01:15:16
【问题描述】:

我的问题是如何(如果可能的话)从像 string[] a; 这样的数组中将它传递给 通过ViewBag查看,如何获取javascript字符串数组。

我想使用它,因为我从数据库中获取了一组数据,并且我想在 查看以制作图表,为此我需要一个 javascript 数组。

【问题讨论】:

    标签: c# javascript asp.net asp.net-mvc razor


    【解决方案1】:

    使用string.Join 或类似方法可以很容易地将数组“渲染”到 Javascript 对象:

    @{
        ViewBag.a = new int[] { 1, 2, 3 };
        ViewBag.b = new string[] { "a", "b", };
    }
    
    <script type='text/javascript'>
        // number array
        var a = [ @(string.Join(", ", (int[])ViewBag.a)) ];
        console.log(a);  // [1, 2, 3]
    
        // string array -- use Html.Raw
        var b = [@Html.Raw("'" + string.Join("', '", (string[])ViewBag.b) + "'")];
        console.log(b);
    </script>
    

    【讨论】:

    • 太棒了。还有一个问题。如果我有一个原始的字符串数组并且想要一个 js 字符串数组?
    • @coredump 查看我的更新——您必须为此使用Html.Raw,否则引号会被 HTML 编码。
    • @haim770 似乎是个好主意,但@Html.Raw(Json.Encode(...)) 让我感到奇怪。它将&amp; 渲染为"\u0026"
    • @haim770 这似乎是一个优雅的解决方案,但你怎么能回避 McGarnagle 提出的问题?
    • 我在Json.Encode 上没有遇到过这样的问题,但我相信@McGarnagle 知道他在说什么。但是,无论如何,您的数组不包含 &amp;,所以只需尝试 var a = @Html.Raw(Json.Encode(new int[] {1,2,3})); 看看它是否对您有好处。
    【解决方案2】:

    控制器

      public ActionResult Index()
        {
            int[] myArray = new int[] { 1, 3, 5, 7, 9 };
            ViewBag.myArray = myArray;
            return View();
        }
    

    查看

    @{
        ViewBag.Title = "Index";
        var myArray = (int[])ViewBag.myArray;
        var myjsstring = "";
        for(int i =0;i<myArray.Length;i++)
        {
            myjsstring += "mycars[" + i.ToString() + "] = " + myArray[i] + ";";
         }
    }
    
        <script type="text/javascript">
            var mycars = new Array();
            @myjsstring
    
    
        </script>
    

    【讨论】:

      【解决方案3】:

      也许:

      @{
          ViewBag.foo = new string[] { "a", "b", "c" };
      }
      
      var newFoo = @Html.Raw(Json.Encode(@ViewBag.foo));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        相关资源
        最近更新 更多