从Ajax ActionLink MVC3.0传递参数到Javascript方法

Pass argument to Javascript metod from Ajax ActionLink MVC3.0

本文关键字:参数 Javascript 方法 Ajax ActionLink MVC3      更新时间:2023-09-26

我有一个问题发送参数(Id)到javascript函数。让我告诉你基本的想法:我有一个培训模型,每个培训模型都有一个调查。我在下面的代码中所做的是为每个培训生成一个弹出链接,员工需要并显示一个弹出窗口。为此,我使用了Ajax ActionLink,并在每个部分中显示弹出窗口,我创建了一个id为Training的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>

您可以使用一个普通的Html.ActionLink,您可以不显眼地进行ajax化,从而为您提供更大的灵活性。你似乎也使用了document.ready函数的一些id参数,它不存在,也无处可去。document.ready回调不接受任何参数。

:

<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>

我也强烈建议你把你的脚本移到一个单独的javascript文件中,不要把你的标记和脚本混在一起。

备注:因为你在一个模态对话框中打开AJAX调用的结果,我不太明白在每行中有一个结果div的意义。你可以简单地把它从<table>中移出来,并有一个单独的