使用ASP.NET(C#)在JS数组中拆分和保存数据
我有一段代码: (我想获得标签并将它们插入一个JS数组,该数组将在HTML页面中写入,但我无法正确获得标签。你能告诉我哪里出了问题,或者帮我做这件事吗?我已经搜索了很多解决方案,但没有一个可行,标签是用逗号分隔的) ASP.NET使用ASP.NET(C#)在JS数组中拆分和保存数据,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我有一段代码: (我想获得标签并将它们插入一个JS数组,该数组将在HTML页面中写入,但我无法正确获得标签。你能告诉我哪里出了问题,或者帮我做这件事吗?我已经搜索了很多解决方案,但没有一个可行,标签是用逗号分隔的) ASP.NET private void Play(List<string> arraySrc, List<string> arrayTitle, List<string> arrayImage, List<string> arrayT
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>\" "));
}
}
private void Play(列表arraySrc、列表arrayttle、列表arrayImage、列表arrayTags)
{
...
string[]tags=arrayTags.ToArray();
字符串[]拆分;
foreach(标记中的字符串项)
{
if(item.IndexOf(',')!=-1)
{
拆分=项目。拆分(',');
foreach(拆分中的字符串s)
{
RegisterArrayDeclaration(“arrayTags”,String.Concat(“\”,s,“\”);
}
}
RegisterArrayDeclaration(“arrayTags”,String.Concat(“\”,item“\”);
}
}
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();
}
功能播放列表(){
禁用();
$(“#img”).attr(“src”、“image/no music.png”);
对于(var i=0;i”+(i+1)+“”;
};
}
函数加载音乐(音乐、标题、图像、标签){
启用();
var audio=$(“#播放器”);
$(“#标记”).empty();
$(“#标记”)。附加(标记);
$(“播放器”).attr(“src”,musica);
$(“#标题”)。文本(标题);
$(“img”).attr(“src”,图像);
$(“#标记span”).addClass(“标签信息”);
/****************/
音频[0]。暂停();
音频[0]。加载();//挂起并恢复所有音频元素
音频[0]。播放();
}
你用了一种错误的方法
首先,在一个循环中声明一个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);
}
private void Play(列表arraySrc、列表arraytle、,
列表阵列图像,列表阵列标签)
{
...
string[]tags=arrayTags.ToArray();
字符串[]拆分;
字符串aT=“arrayTags”;
string aV=string.empty;
foreach(标记中的字符串项)
{
if(item.IndexOf(',')!=-1)
{
拆分=项目。拆分(',');
foreach(拆分中的字符串s)
{
aV+=“\”+字符串.Concat(“,s,”)+“\”,”;
}
}
}
aV=aV.SubString(0,aV.Length-2);//删除最后一个尾随逗号
ClientScript.RegisterArrayDeclaration(aT,aV);
}
我还没有测试过它,请注意字符串连接,但这是您应该做的。您能给我们一个希望作为输出的Javascript示例吗?无论如何,这就是我建议你开始解决这个问题的地方。从所需的输出开始,然后向后操作。如果您只想在页面上写入所有标记,那么为什么要进行RegisterArrayDeclaration?直接写在页面上,但是标签保存在数据库中,那又怎样?您可以创建一个Webmethod并通过ajaxI检索所有标记,看看您要去哪里,但是您希望生成的Javascript数组需要看起来像什么?即,
var arr=[{ElementName1:'value',ElementName2:'value'},{…}]代码>