如何在ajax append函数中传递一个变量(使用razor将其传递到html元素中)
本文关键字:razor 使用 元素 html 变量 ajax append 函数 一个 | 更新日期: 2023-09-27 18:29:20
我需要将对象的Id传递到html元素(剃刀部分)中,但它无法识别。看起来Id不在它的范围内,或者其他什么。有没有一种方法可以将值传递到append函数中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);
});
}
谢谢。
我这样做:
+ "<p><button onclick='"location.href='@(Url.Action("Edit", "Company"))?id=" + response.CompanyId + "''">Edit</button>"
您完全没有服务器端渲染和浏览器执行的概念。考虑这个例子,您的服务器渲染您的js代码,并将所有工作留给浏览器,然后浏览器以某种方式执行Ajax请求(点击按钮),当Ajax完成时-您有一个响应值,但这个值只存在于浏览器上下文中,因此将值传递到razor中是没有意义的,因为它在渲染文件时已经完成了工作
现在,该怎么办?最简单的解决方案是自己编辑公司的核心Url,因为剃刀根本不知道客户端发生了什么,例如:
location.href="/company/1/edit" //where 1 is id from Ajax request
最简单的完整解决方案是
public ActionResult WhateverMethod()
{
// ....
var urlHelper = new UrlHelper(this.ControllerContext.RequestContext);
response.Url = Url.Action("Edit", "Company", new { @id = response.CompanyId });
// ....
}
和
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>");
在JavaScript中调用Razor方法只会让你感到悲伤。
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>")