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
なんで?
int を受け入れるように JavaScript を変更すると、次のようになります。
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 を渡すと、なぜこれが機能するのでしょうか?