拆分和保存数据在JS数组使用ASP.NET (c#)

Split and Save data in JS Array using ASP.NET (C#)

本文关键字:ASP NET 数组 保存 数据 JS 拆分      更新时间:2023-09-26

我有这段代码:

(我想获得标签并将它们插入JS数组中,将在HTML页面中写入,但我不能正确地获得标签,你能告诉我什么是错的,或者帮助我这样做,我已经搜索了很多解决方案,但没有一个在这里工作,标签被逗号分割)

ASP。

private void Play(List<string> arraySrc, List<string> arrayTitle, List<string> arrayImage, List<string> arrayTags)
        {
            ...
            string[] tags = arrayTags.ToArray();
            string[] split;
            foreach (string item in tags)
            {
                if (item.IndexOf(',') != -1)
                {
                    split = item.Split(',');
                    foreach (string s in split)
                    {
                        ClientScript.RegisterArrayDeclaration("arrayTags", String.Concat("'"<span class=label>", s, "</span>'" "));
                    }
                }
                ClientScript.RegisterArrayDeclaration("arrayTags", String.Concat("'"<span class=label>", item, "</span>'" "));
            }
         }

JS

function playList () {
    disabled();
    $("#img").attr("src", "image/no-music.png");
    for (var i = 0; i < arraySrc.length; i++) {
        $("#tab1 ul").append("<li>" + (i + 1) + ". <a href='javascript:loadMusic('"" + arraySrc[i] + "'", '"" + arrayTitle[i] + "'", '"" + arrayImage[i] + "'", '"" + arrayTags[i] + "'"); selected(" + i + ");'>" + arrayTitle[i] + "</a></li>");
    };
}
function loadMusic (musica, title, image, tags) {
    enabled();
    var audio = $("#player");      
    $("#tags").empty();
    $("#tags").append(tags);
    $("#player").attr("src", musica);
    $("#title").text(title);
    $("#img").attr("src", image);
    $("#tags span").addClass("label-info");
    /****************/
    audio[0].pause();
    audio[0].load(); //suspends and restores all audio element
    audio[0].play();
}

你做错了。

首先,你在循环中声明了一个javascript数组对象,这意味着你多次声明了一个同名的数组。避免这样做。

其次,你应该给你的数组分配逗号分隔的字符串值来初始化。

基本上,你在javascript中通过服务器端声明一个数组,像这样

ClientScript.RegisterArrayDeclaration("arrayName","1,2,3,4");
or
ClientScript.RegisterArrayDeclaration("arrayName","'"One'",'"Two'",'"Three'"");

因此,这个概念是,在循环中为数组创建值(命令分隔的字符串),然后在循环之后,用这个创建的值注册一个数组。

因此这样做:

private void Play(List<string> arraySrc, List<string> arrayTitle, 
                   List<string> arrayImage, List<string> arrayTags)
{
    ...
    string[] tags = arrayTags.ToArray();
    string[] split;
    string aT="arrayTags";
    string aV=string.empty;
    foreach (string item in tags)
    {
      if (item.IndexOf(',') != -1)
      {
         split = item.Split(',');
         foreach (string s in split)
         {
            aV +="'""+ String.Concat("<span class=label>", s, "</span>"))+"'",";
         }
      }
    }
    aV = aV.SubString(0,av.Length-2);//drop the last trailing comma
    ClientScript.RegisterArrayDeclaration(aT,aV);
}

我还没有测试过,注意字符串连接,但这是你应该做的。