将参数从Ajax ActionLink MVC3.0传递给Javascript metod

将参数从Ajax ActionLink MVC3.0传递给Javascript metod,javascript,asp.net-mvc,asp.net-mvc-3,asp.net-ajax,Javascript,Asp.net Mvc,Asp.net Mvc 3,Asp.net Ajax,向javascript函数发送参数(Id)时出现问题。让我告诉你基本的想法:我有一个培训模型,每个培训模型都有一个调查。我在下面的代码中所做的是为员工接受的每个培训生成一个弹出链接,并显示一个弹出窗口。为此,我使用了Ajax ActionLink,并在每个部分中显示弹出窗口,我创建了一个带有培训id的div。因此,当onComplete完成时,我调用一个javascript函数openPopup来显示弹出窗口,但它没有。总之,我有不同的div,在其中我将弹出一个窗口,我想将div的id传递给ja

向javascript函数发送参数(Id)时出现问题。让我告诉你基本的想法:我有一个培训模型,每个培训模型都有一个调查。我在下面的代码中所做的是为员工接受的每个培训生成一个弹出链接,并显示一个弹出窗口。为此,我使用了Ajax ActionLink,并在每个部分中显示弹出窗口,我创建了一个带有培训id的div。因此,当onComplete完成时,我调用一个javascript函数openPopup来显示弹出窗口,但它没有。总之,我有不同的div,在其中我将弹出一个窗口,我想将div的id传递给javascript函数。你能告诉我怎么解决这个问题吗

多谢各位

  <script type="text/javascript">
        $(document).ready(function (id) {
            $(id).dialog({
                autoOpen: false,
                title: 'Anket',
                width: 500,
                height: 'auto',
                modal: true
            });
        });
        function openPopup(id) {
            $(id).dialog("open");
        }
    </script>

   foreach (var training in Model.TrainingList)
   {
      <tr>
        <td class="view_detail_label">
                        Eğitim Adı
         </td>
          <td>

          @Ajax.ActionLink(training.Name.Name,
                           "AddSurvey", 
          new { employeeId = Model.Id, trainingId = training.Id },
           new AjaxOptions
             {
            UpdateTargetId = training.Id.ToString(),
              HttpMethod = "GET",
              InsertionMode = InsertionMode.Replace,
               LoadingElementId = "context",
               OnComplete = "openPopup('"+training.Id.ToString()+"')"
                 })

               <div id="@training.Id" style="display:none;"/>  

                    </td>                        
                </tr>                 
               }           
            }
        </table>

$(文档).ready(函数(id){
$(id).对话框({
自动打开:错误,
标题:“脚镯”,
宽度:500,
高度:“自动”,
莫代尔:对
});
});
函数openPopup(id){
$(id).对话框(“打开”);
}
foreach(模型培训列表中的var培训)
{
伊蒂姆·阿德
@ActionLink(training.Name.Name,
“添加调查”,
新的{employeeId=Model.Id,trainingId=training.Id},
新选择
{
UpdateTargetId=training.Id.ToString(),
HttpMethod=“GET”,
InsertionMode=InsertionMode.Replace,
LoadingElementId=“上下文”,
OnComplete=“openPopup(“+training.Id.ToString()+”)”
})
}           
}

你可以使用一个简单的
Html.ActionLink
,你可以悄悄地使用AJAXify,这给了你更多的灵活性。另外,您似乎使用了
document.ready
函数的一些
id
参数,该函数不存在,也没有来源。
document.ready
回调不接受任何参数

因此:


$(文档).ready(函数(){
$('.addSurvey')。单击(函数(){
$.ajax({
url:this.href,
键入:“GET”,
cache:false,
背景:这,,
成功:功能(结果){
$(this).next('.result').html(result).dialog({
自动打开:对,
标题:“脚镯”,
宽度:500,
高度:“自动”,
莫代尔:对
});
}
});
返回false;
});
});
@foreach(模型培训列表中的var培训)
{
伊蒂姆·阿德
@Html.ActionLink(
training.Name.Name,
调查,
新{
employeeId=Model.Id,
trainingId=training.Id
},
新的{
@class=“addSurvey”
}
)
}
另外,我强烈建议您将脚本移出一个单独的javascript文件,不要将标记与脚本混合


备注:因为您是在模式对话框中打开AJAX调用的结果,所以我不太明白在每一行中都有一个result div的意义。您可以简单地将它从
中移出,并拥有一个。

我不使用razor和ajax.actionLinks,所以这只是猜测:)。也许您应该在这一行中添加@beforetraining:OnComplete=“openPopup”(“+training.Id.ToString()+”)”。无论如何,检查是否有任何东西被传递到openPopup。在我生成的html代码中,链接如下所示:也许你需要像这样调用$(“#“+id)。对话框({…我也尝试过,但它不起作用,嗯,我会使用Darin Dimitrov解决方案进行重构,因为这是一种更好的方法。祝你好运。这对超过1个链接有效吗?我使用过1个链接,当我有多个链接时,要在javascript上更新的div id会给我带来问题。当然,它会起作用。注意我是如何使用类选择器的。但你必须问自己的更重要的问题是,既然你正在打开一个模式对话框,为什么你需要有多个div。我宁愿改变这一点,在表外有一个单独的结果div。那么你点击哪个链接就无关紧要了。我将div放在表外,将actionlink改为你提供的那个d并将javascript方法替换为您的,它不会打开弹出窗口。我缺少什么?是否发送AJAX请求?您是否收到服务器的响应?当您在javascript调试工具的“网络”选项卡中检查此请求时发生了什么?javascript控制台中是否有错误?
$的值是多少(此).next('.result')
在成功的AJAX回调中-它返回任何元素吗?在控制器addsurvey断点中存在AJAX请求并返回,但当我右键单击并在新选项卡中打开它时,它不会在弹出窗口中打开,而是在新选项卡中打开。javascript控制台中也没有错误
<script type="text/javascript">
    $(document).ready(function () {
        $('.addSurvey').click(function() {
            $.ajax({
                url: this.href,
                type: 'GET',
                cache: false,
                context: this,
                success: function(result) {
                    $(this).next('.result').html(result).dialog({
                        autoOpen: true,
                        title: 'Anket',
                        width: 500,
                        height: 'auto',
                        modal: true
                    });
                }
            });
            return false;
        });
    });
</script>

<table>
    @foreach (var training in Model.TrainingList)
    {
       <tr>
           <td class="view_detail_label">
               Eğitim Adı
           </td>
           <td>
               @Html.ActionLink(
                   training.Name.Name, 
                   AddSurvey, 
                   new { 
                       employeeId = Model.Id, 
                       trainingId = training.Id 
                   },
                   new {
                       @class = "addSurvey"
                   }
               )
               <div class="result"></div>
           </td>                        
       </tr>                 
    }
</table>