将Ajax.Actionlink OnSuccess上的Model id传递给另一个Javascript函数

时间:2012-04-26 20:18:04

标签: c# javascript jquery ajax model-view-controller

我似乎无法想象出正确的语法。似乎已经尝试了一切:

@model User

...

@Ajax.ActionLink("Add", "AddUser",new {id = Model.Id }, new AjaxOptions
{
HttpMethod = "post",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "dialog-add-user",
OnSuccess = **"function(){ AddUserShow(" + @Model.Id + ");}",**
OnFailure = "userFailure"
}

成功之后我只需要将userId传递给另一个Javascript方法。似乎没什么用。我环顾四周找到了一些建议,但仍然没有运气。 我试过了:

 "new Function('AddUserShow(" + @Model.Id + ")')",
 "function(){ AddUserShow(" + @Model.Id + ");}",
 "function(){ AddUserShow(this," + @Model.Id + ");}",

 Also tried sticking the user ID in a hidden field to try and pass it later from functions above instead of accessing @Model:
 "AddUserShow($('#Id').val()))",

接收端的代码:

function AddUserShow(id)
{
 alert(id);
}

如果重要,那么传递的是一个Guid。

有什么想法吗? 提前致谢

1 个答案:

答案 0 :(得分:1)

你需要引号,否则javascript会尝试将你的Id解释为变量。

"AddUserShow(" + @Model.Id + ");" // bad. becomes AddUserShow(123abc);
"AddUserShow('" + @Model.Id + "');" // good! becomes AddUserShow('123abc');