2012-06-21 6 views
0

동적으로 링크를 생성하는 데 문제가있는 MVC/jquery를 처음 사용합니다.자바 스크립트에서 MVC 작업 링크 생성

텍스트 상자에 사용자가 입력하고 추가 버튼을 조회 할 경우, 우리는 다음과 같은 자바 스크립트 호출 : 그래서

addItem: function (button) { 
     var text = this.$text.val(); 
     var $newCell = $('<td>'); 
     $newCell.text(text); 
     var $hidden = $('<input type="hidden" />'); 
     $hidden.attr('name', this.name); 
     $hidden.val(text); 
     $newCell.append($hidden); 
     $newCell.append('</td>'); 
     var $newLinkCell = $('<td>'); 
     var $newLink = $('<a href="#" id="newLink">EPA Action Link</a>'); 
     var $newLinkTarget = '<%: @Html.ActionLink("EPA Action Link", "EPARedirect", new { EPAId = "' + text + '" }, new { target = "_blank" }) %>'; 
     $newLink.attr("href", $newLinkTarget); 
     $newLinkCell.append($newLinkTarget); 
     $newLinkCell.append('</td>'); 
     var $html = $('<tr>'); 
     $html.append($newCell); 
     $html.append($newLinkCell); 
     $html.append('</tr>'); 
     this.$table.append($html); 

     this.initItem($newCell); 
     this.$text.val(''); 
    } 

무엇을 내가 뭘하는 테이블의 위치를, 2 개 개의 세포로 새 행을 추가를 : 데이터를 표시 할 수있는 왼쪽과 해당 데이터와의 연결을 매개 변수로 표시 할 수있는 권한.

기존 항목의 경우 cshtml 파일에 동일한 ActionLink가 있습니다 (단, EPAId는 "@item"이라는 jquery 변수를 통해 작성됩니다).

어쨌든 필자는 추가 기능에서 동일한 유형의 링크를 동적으로 빌드하는 방법을 알아 내려고 노력했습니다. 내가 얻는 것은 $ newLinkTarget의 문자 그대로의 텍스트입니다. 이 말이 맞는 것 같아요. 서버의 jquery 렌더링을 통해 눌려지지 않고 있습니다.

여기 완전히 잘못된 경로입니까?

답변

1

클라이언트 측에서 사용할 수없는 라우팅을 고려해야하기 때문에 링크 클라이언트 측을 생성 할 수 없습니다. @ Url.ActionLink를 사용하여 JS 변수에 저장 한 다음 클라이언트에서 기본 URL로 사용하거나 경로를 생성 할 수있는 Ajax 메서드를 사용하여 기본 URL을 생성해야합니다.

+0

또는 그가 입력하는 텍스트 상자에'data-url'과 같은 추가 'data- *'속성이있을 수 있으며 그 값은 서버 측에서 생성 된 URL입니다 –

관련 문제