【发布时间】:2012-09-06 02:26:52
【问题描述】:
当调用一个 javascript 函数时,它只有在我传入一个 int 时才有效。如果我传入一个字符串,它会失败。
例如,这是我的控制器,我在其中将人员列表传递给视图。
public ActionResult Index()
{
List<Person> people = new List<Person>();
people.Add(new Person() { Id = 1, FirstName = "Geddy", LastName = "Lee" });
people.Add(new Person() { Id = 2, FirstName = "Alex", LastName = "Lifeson" });
return View(people);
}
在视图中,我有这个javascript函数:
function RemovePerson(firstName) {
alert(firstName);
}
我的 webgrid 有一列允许用户删除一个人:
gridPeople.Column(header: "", columnName: "",
format: (person) => MvcHtmlString.Create(string.Format(
"<a href='' onclick='RemovePerson({0}); return false;'>x</a>",
person.FirstName))),
如上所示,当我单击 x 删除一个人时,出现此错误:
Uncaught Reference Error: Geddy is not defined
为什么?
如果我将 javascript 更改为接受 int:
function RemovePerson(personId) {
alert(personId);
}
并实际传递 int:
gridPeople.Column(header: "", columnName: "",
format: (person) => MvcHtmlString.Create(string.Format(
"<a href='' onclick='RemovePerson({0}); return false;'>x</a>",
person.Id))),
它正确地显示了一个带有 int 值的消息框。那么为什么在传递 int 而不是名称时这会起作用?
【问题讨论】:
-
我的猜测是您需要将字符串括在引号中,否则您的函数会尝试将其评估为变量
-
发布客户实际收到的内容通常会有所帮助。这样可以根据实际输出修复错误,而不是解释源代码的可能输出。
-
@RobG 你是说发布页面源代码吗?
-
是的,但只是相关的部分(例如 A 元素的 HTML),而不是全部。
-
"如果我将 javascript 更改为接受 int
function RemovePerson(personId){..." - 请注意,您尚未将 JS 更改为 接受 an int:将RemovePerson()的参数名称从firstName更改为personId没有区别。你所改变的是你用一个号码调用它。
标签: c# javascript asp.net asp.net-mvc razor