0

MVC/jquery の初心者で、リンクを動的に作成する際に問題があります。

ユーザーがテキスト ボックスに入力して追加ボタンを押すと、次の JavaScript が呼び出されます。

    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レンダリングによって押し出されていません。

ここで私は完全に間違った道を進んでいますか?

4

1 に答える 1

1

クライアント側で利用できないルーティングを考慮する必要があるため、クライアント側でリンクを生成することはできません。@Url.ActionLink を使用してベース URL を生成し、これを JS 変数に格納してクライアントのベースとして使用するか、パスを生成できる Ajax メソッドを呼び出す必要があります。

于 2012-06-21T16:30:08.227 に答える