如何在ajax append函数中传递一个变量(使用razor将其传递到html元素中)
How to pass a variable in ajax append function (into html element with razor)?
我需要将对象的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>")
相关文章:
- 如何在javascript函数中使用Razor值
- 使用Razor/C#循环浏览HTML表以获得每个<tr>
- 使用Razor和javascript来获得下拉列表元素
- 如何使用Razor显示模板将字符串转换为html字符串
- 如何在Razor MVC 5.2.3 Ajax中使用多个提交按钮
- 如何使用Javascript和Razor编写干净的代码
- 如何在 VB 项目中混合使用 Razor 和 Javascript
- 在 ActionLink mvc3 Razor 中使用 java 脚本变量
- 使用 Razor 添加 JS 代码
- 尝试使用MVC5 razor中的bootstrap 3获取相邻的2个表单字段(内联)
- MVC 4使用Razor禁用多个下拉列表中的值
- 根据列值将类添加到元素中;使用WebMatrix sql数据库、Cshtml(Razor)和JavaScript
- MVC.Net 4 Razor问题使用<文本>标签
- 使用Razor和JS在信息窗口中嵌入图像
- 使用 Jquery 将属性 Required 添加到 Razor 应用程序中的输入中
- 如何在 .Net MVC3 中使用 json 和 razor snytax 更改表单的标签
- 在 MVC3 Razor 视图引擎中使用 JavaScript 变量
- 在具有 Razor 语法的表元素中使用折叠项
- 仅使用 JavaScript 的 Razor 视图
- Razor-使用JavaScript在饼图中显示字典数据