如何在ajax追加函数中传递一个变量(用razor转换成html元素)?

时间:2016-01-07 18:32:14

标签: javascript c# json razor

我需要将对象的Id传递给html元素(razor部分),但它不能识别它。看起来Id不在其范围内,或者其他东西。有没有办法将值传递给追加函数中我的html元素的剃刀部分?

$.ajax({
        data: data,
        url: url + "?searchTerm=" + data

    }).success(function (response) {

        console.log(response);
        var table = $('#companyTable');
        var tBody = table.children('tbody');
        tBody.html("");
        var textbox = document.getElementById("searchBar");
        textbox.value = "";

        tBody.append(
            "<tr><td>" +response.CompanyName + " </td><td>" +
                       response.CompanyIdNumber + "</td><td>" +
                       response.CompanyTaxNumber + "</td><td>" +
           "<p><button onclick=\"location.href='@Url.Action("Edit", "Company", new { @id = response.CompanyId  })'\"> Edit</button></p>" +
                           "</td></tr>"
                );
            table.removeClass("hidden");
            var originalTable = $('#originalTable');
            originalTable.remove();

        }).error(function (response) {
            console.log(response);
        });
    }

谢谢。

4 个答案:

答案 0 :(得分:0)

您完全忽略了服务器端呈现和浏览器执行的概念。考虑这个例子,你的服务器渲染你的js代码,然后把所有工作留给浏览器,然后浏览器星星以某种方式执行Ajax请求(按钮点击),当Ajax完成时 - 你有一个响应值,但是这个值只存在于浏览器上下文中因此将值传递给剃刀是没有意义的,因为它在渲染文件时已经完成了它的工作

现在,该怎么办?最简单的解决方案是自己编写公司编辑的核心Url,因为剃刀根本不知道客户端发生了什么,例如:

location.href="/company/1/edit" //where 1 is id from Ajax request

答案 1 :(得分:0)

最简单的完整解决方案是

tBody.append(
  "<tr><td>" +response.CompanyName + " </td><td>"
  + response.CompanyIdNumber + "</td><td>"
  + response.CompanyTaxNumber + "</td><td>"
  + "<p><button onclick=\"location.href='" + response.Url + "'\"> Edit</button></p>"
  + "</td></tr>");

df1 = pd.DataFrame(np.random.randn(dates.shape[0],2),index=dates,columns=list('AB'))
df1['C'] = 'A'
df1['D'] = 'Pickles'
df2 = pd.DataFrame(np.random.randn(dates.shape[0], 2),index=dates,columns=list('AB'))
df2['C'] = 'B'
df2['D'] = 'Ham'
df3 = pd.concat([df1, df2], axis=0)

在JavaScript中调用Razor方法会让你感到悲伤。

答案 2 :(得分:0)

我是这样做的:

Range(Cells(1, "A"), Cells(RowFinal, "A")).Select

答案 3 :(得分:-1)

response.CompanyId is considered as string , so try by concatenating it as below   
var a="location.href='@Url.Action("Edit", "Company", new{@id='"+response.CompanyId+"'})'"
 response.CompanyId ( "<tr><td>" +response.CompanyName + " </td><td>" +
 response.CompanyIdNumber + "</td><td>" +
 response.CompanyTaxNumber + "</td><td>" +
 "<p><button onclick=\""+a +"\"> Edit</button></p>" + "</td></tr>")