如何使用jquery在表体中附加Ajax.ActionLink?

时间:2018-01-20 16:22:56

标签: c# jquery ajax asp.net-mvc

这是我的ajax代码:

<script>
$(document).ready(function () {

    $("#BtnSearch").click(function () {
        var SearchBy = $("#SearchBy").val();
        var SearchValue = $("#Search").val();
        var SetData = $("#DataSearching");
        SetData.html("");
        debugger;
        $.ajax({
            type: "POST",
            contentType: "html",
            url: "/SelectDeal/GetSearchingData?SearchBy=" + SearchBy + "&SearchValue=" + SearchValue,
            success: function (result) {
                debugger;
                if (result.length == 0) {
                    SetData.append('<tr style="color:red"><td colspan="3">No Match Data</td></tr>');
                }
                else {
                    $.each(result, function (i, item) {
                        //var clientName = item.

                        var DealDateString = item.Deal_Date;
                        var valDealDate = new Date(parseInt(DealDateString.replace(/(^.*\()|([+-].*$)/g, '')));
                        var finalDealDate = valDealDate.getMonth() + 1 + "/" + valDealDate.getDate() + "/" + valDealDate.getFullYear();

                        var ValidityDateString = item.Validity_Date;
                        var valValidityDate = new Date(parseInt(ValidityDateString.replace(/(^.*\()|([+-].*$)/g, '')));
                        var finalValidityDate = valValidityDate.getMonth() + 1 + "/" + valValidityDate.getDate() + "/" + valValidityDate.getFullYear();

                        var val = "<tr>" +
                       "<td>" + finalDealDate + "</td>" +
                       "<td>" + item.Total_Amount_Remaining + "</td>" +
                       "<td>" + item.Dealer_Name + "</td>" +
                       "<td>" + finalValidityDate + "</td>" +
                       "<td>" + item.Location + "</td>" +
                       "<td>" + item.Deal_Amount + "</td>" +
                       "<td>" +  @Ajax.ActionLink("Recieve payment", "myAction", new AjaxOptions
                           {
                               HttpMethod = "GET",
                               InsertionMode = InsertionMode.Replace,
                               UpdateTargetId = "dialog_window_id",
                           }) +  "</td>" +
                       "</tr>";

                        SetData.append(val);
                    });
                }
            },
            error: function (data) {
                alert(data);
            }
        });
    });
});
</script>

我想在setData变量中附加Ajax.ActionLink,它实际上是一个<tbody>元素。它不起作用。但是,如果我从上面的代码中删除@ ajax.actionLink,它可以正常工作。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果查看页面的视图源,可以看到当前代码将生成这样的代码

 "<td>" +  <a data-ajax="true" data-ajax-method="GET"

这是无效的,因为看起来我们正在尝试将字符串"<td>"连接到变量,如<a开头!因此导致了这个问题。

您不需要任何字符串连接。使用td中的C#代码(调用Ajax.ActionLink方法)呈现的输出。

Ajax.ActionLink方法将在下面显示标记,其中您有属性值的双引号。因此,您应该为字符串连接运算符使用单引号(到val变量)

<a data-ajax="true" data-ajax-method="GET"

这应该有用。

'<td>@Ajax.ActionLink("Recieve payment", "Ajax.ActionLink", new AjaxOptions
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "dialog_window_id",
    }) </td>' +