我在類型複選框的輸入標籤調用一個JavaScript功能和onchange事件發送模型布爾值到js函數結果從模型傳遞三個參數的函數:在平變化函數參照
<input type="checkbox" ... onchange="changeRow('@Model.Id', '@Model.Type', @Model.AwaitingApproval)" ...
在changeRow javascript函數中,前兩個值正確報告,但第三個參數(布爾類型)是對onchange函數的引用。在檢查該值時,我可以看到onchange函數簽名,並指出它是一個函數。
這是一個正常的MVC應用程序,帶有一些jquery,數據通過來自控制器的ajax調用進行通信,該控制器通過模型提供數據。
如果我更改代碼以執行以下操作:
<label>@Model.AwaitingApproval <input type="checkbox" ... onchange="changeRow('@Model.Id', '@Model.Type', @Model.AwaitingApproval)" ... </label>
然後,值TRUE被複選框前打印的頁面上。所以,這證明了模型的價值是正確的,並且可以被引用。
任何想法可能會導致js函數中的怪異行爲將不勝感激! (或者對這種行爲的解釋,如果它是預期,我不理解爲什麼會這樣。)
JavaScript函數:
function changeRow(Id, Type, AwaitingApproval)
{
if (!AwaitingApproval) (*This is where I first detected the problem*)
{
...
}
}
沒有什麼「特殊」關於JavaScript函數,它只是接收參數,然後根據這些值進行處理。 ID參數具有正確的整數值,類型字段具有正確的字符串值,但AwaitingApproval參數具有下列:
function onchange(event)
{
changeRow('7334512', 'targeted', onchange)
}
這基本上是參照我在分配給onchange事件的函數第一個地方,你猜對了,第三個參數中的onchange就是對同一個函數的另一個引用,以同樣的方式導致無限的參考循環。
顯示你的'changeRow()'函數。 –
@Stephen - 我已經添加了關於javascript代碼和我在那裏的問題的更多信息。感謝您的時間! – WJK