2013-05-20 35 views
0

將參數(Id)發送給javascript函數時出現問題。讓我告訴你一些基本的想法:我有一個訓練模型,每個訓練模型都有一個調查。我在下面的代碼中做的是爲每個員工進行的培訓生成一個彈出鏈接並顯示一個彈出窗口。爲此,我使用了Ajax ActionLink,並在每個部分顯示彈出窗口,並使用Training的id標識了一個div。所以當onComplete我調用一個JavaScript函數openPopup來顯示彈出窗口,但它不。所以總而言之,我有不同的div,其中我將彈出一個窗口,並且我想將div的id傳遞給javascript函數。你能告訴我如何解決這個問題嗎?將參數從Ajax ActionLink傳遞給Javascript metod MVC3.0

謝謝。

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

我不使用剃刀和ajax.actionLinks,所以這只是猜測:)。也許你應該在這一行中加入@之前:OnComplete =「openPopup('」+ training.Id.ToString()+「')」。無論如何,檢查是否有任何東西傳遞給openPopup。 –

+0

在我生成的HTML代碼的鏈接如下所示: "Effective Test Design" Eğitimi

Eneramo

+0

也許你需要這樣調用$(「#」 + ID).dialog({... –

回答

2

你可以使用一個普通的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>中移出並且只有一個。

+0

這將工作超過1鏈接?我曾與1鏈接,當我有多個鏈接,div ID是更新了javascript創建了我的問題 – Eneramo

+0

當然,它會工作。注意我是如何使用類選擇器的。但是更重要的問題你必須問自己,爲什麼你需要有多個div,因爲你打開一個模態對話框。我寧願改變這一點,並有一個單一的重新在桌子外面。那麼,你點擊哪個鏈接並不重要。 –

+0

我把div放在了表格外面,改變了actionlink與你提供的並且用你的方法替換了javascript方法,它不打開彈出窗口。我錯過了什麼? – Eneramo

相關問題