簡體   English   中英

從Ajax ActionLink MVC3.0向Javascript metod傳遞參數

[英]Pass argument to Javascript metod from Ajax ActionLink MVC3.0

我有一個問題發送參數(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 ,你可以不引人注意地使用AJAXify,它可以提供更大的靈活性。 此外,您似乎已經使用了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>移出它並只有一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM