2013-04-01 3 views
1

I했습니다이 코드 조각 :분할 및 저장 데이터

(I이 태그를 얻고 HTML 페이지에 쓸 것이다 JS 배열에 삽입하려면, 하지만 난 당신이 무슨 잘못 말해, 또는 나에게이 일을 도울 수 제대로 태그를 얻을 어차피, 난 솔루션을 많이 검색 한하지만 여기서 일하는 것도, 태그는

ASP.NET

) 쉼표 (,)로 splited되지 않습니다
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(); 
} 
+0

출력으로보고 싶은 Javascript의 예를 들려 줄 수 있습니까? 이것은 어쨌든 문제에 대한 작업을 시작하는 것이 좋습니다. 원하는 출력으로 시작하고 뒤로 작업하십시오. –

+0

페이지의 모든 태그를 쓰고 싶다면 RegisterArrayDeclaration을 사용해야하는 이유는 무엇입니까? 직접 페이지 –

+0

에 쓰지만 태그는 데이터베이스에 저장됩니다 – Severiano

답변

3

잘못된 방식으로 처리하고 있습니다.

첫 번째로 루프에서 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); 
} 

, 문자열 연결에 대한 조심,하지만 당신이 그것에 대해 이동하는 방법입니다 :

그러므로 다음과 같이 해.