2014-04-04 50 views
0

我有這樣的代碼在.cshtml文件傳遞參數:通過在HTML文件.cshtml

var peopleList = $('#PeopleListTable').dataTable({ 
        // not relevant 
        "fnRender": function (oObj) { 
         var documentiddata = oObj.aData[0]; 
         var notesdata = (oObj.aData[2]); 
         //alert(notesdata); 

         if (notesdata != null) { 
          var image = "images/AR/Check-on.png";               
          // return '<a href="#" id="' + notesdata + '" onclick="return ShowNotes(this);">' + '<img src="' + image + '" />' + '</a>'; 
          return '<p><a onmouseout="return hideNotePopup();" onmouseover="return showNotePopup(notesdata, event);" href="javascript:void(0);" id="' + documentiddata + '">' + '<img src="' + image + '" />' + '</a></p>' 
         } else { 
          return '<a href="#" id="' + documentiddata + '"> ' + '<img src="images/AR/Check-off.png" />' + '</a>'; 
         }       
        } 
        }, 
       { "sName": "OfficerName", sType: "string", sWidth: "12%" }, 
       { "sName": "CreateDate", sType: "string", sWidth: "15%" }, 
       { "sName": "FinalizedDate", sType: "string", sWidth: "15%" }, 
       { "sName": "TransferDate", sType: "string", sWidth: "15%" }, 
       { "sName": "AgencyOri", sType: "string", sWidth: "10%" } 
      ] 
     }); 

那麼這個代碼在JavaScript:

function showNotePopup(notesdata, e) { 
     $("#NoteDialog").dialog('close'); 
     $("#NoteDialog").removeClass("ui-icon ui-icon-closethick"); 
     $("#NoteDialog").dialog({ 
      autoOpen: false, 
      modal: true, 
      resizable: false, 
      position: [e.pageX, e.pageY-190] 
     }); 
     $("#NoteDialog").dialog('open'); 
     document.getElementById("note").innerHTML = notesdata; 
    } 

這段代碼的目標是將鼠標懸停在數據表中的註釋圖像,然後彈出顯示註釋的內容。如果我有alert(notesdata),說明正確顯示。但是,當我將鼠標懸停在圖像上並檢查控制檯時,它說在showNotePopup()調用中未定義notesdata。我試圖通過thisoObj,無濟於事。我怎樣才能從cshtml裏面獲得notesdata到javascript的功能?

回答

3

變量notesdata只存在於函數fnRender的上下文中。事件onmouseover在不同的上下文中執行,所以變量超出範圍。您需要通過

onmouseover="return showNotePopup(&quot;' + notesdata + '&quot;, event);" 
+0

+1改變

onmouseover="return showNotePopup(notesdata, event);" 

。請注意,所有形式的'eval'通常被認爲是不好的做法...不幸的是,OP是用字符串連接構造html而不是使用一些模板引擎或者使用jQuery創建元素 - 所以這個答案(如果'notesdata'來減去腳本注入問題從用戶)是好的方法。 –

+0

@ClaudioRedi這是造成語法錯誤,而以前沒有一個。開發工具告訴我有一個意外的令牌}。任何可能的原因?另外,我在你的答案中交換了單引號和雙引號的順序,因爲整個return語句用單引號引起來。 – aquemini

+0

@aquemini:對不起,我引用了一個錯誤。請嘗試用編輯的版本 –