0

我不知道這裏發生了什麼。Asp.net MVC 4:錯誤在Chrome和不在Internet Explorer

我有被稱爲在jQuery腳本我有一個動作方法......

    ondblClickRow: function (id) { 
         debugger; 
         var dummyURL ='@Url.Action("EditEncounter", "EditEncounter", new { encounterId = 0, popId = (int)TempData["POPULATIONID"] })'; 
         var path = dummyURL.replace("-2", id); 
         document.location.href = path; 
         //new { encounterId = temp.EncounterId, popId = (int)TempData["POPULATIONID"] }' 
        } 

,當我嘗試使用鉻我得到這個例外,通過這條路線導航到該頁面某些原因:

The parameters dictionary contains a null entry for parameter 'popId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult EditEncounter(Int32, Int32)' in 'FocusedReadMissionsRedux.Controllers.EditEncounterController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. 
Parameter name: parameters 

但在IE中,我調用操作方法,並導航到適當的頁面,而沒有發生任何事件。我肯定錯過了什麼?

修訂 我注意到,我得到這個查詢字符串...

encounterId=2245&popId=2 

通知thte '&' 和 'amp;'。我在想我的路線沒有正確設置。我會嘗試一些事情,讓你知道發生了什麼。

CONFIRMED

這是在Internet Explorer

encounterId=2245&popId=2 

我的路線和它的作品。我只需要弄清楚爲什麼會發生這種特殊的請求。

UPDATE

Visual Studio是沒有更新,當我試圖調試我的程序生成的文件CSHTML。任何人都經歷過這件事,以及如何獲得它?

+0

您在Chrome開發人員工具欄的「網絡」選項卡中看到了什麼?正在請求什麼網址?這是正確的嗎?另外,當您檢查頁面的HTML時,標記中的'dummyURL'的值是多少。還有一個最後的問題:'dummyURL.replace(「 - 2」,id)'行是什麼?你在方法內記錄了這個'id'變量的值嗎?另外你似乎在那裏使用TempData,因爲你知道它可以被驅逐,如果一箇中間請求正在讀取它。這可能是一個AJAX請求。 –

+0

我確保tempdata字段已被水合。這條線讓我可以在觸發某個事件後獲得準確的路線。我將使用chrome檢查html流量。 – SoftwareSavant

回答

0

您是否嘗試將popId設置爲nullable類型?這聽起來像它不喜歡你的可選參數是一個整數,而不是一個可爲空的整數。當然,我看不到你的控制器和視圖,但這是錯誤信息告訴我的。見下文。

添加的int?代替int

所以你ViewResult將需要在你的控制器可爲空參數:

public ViewResult EditEncounter(int? encounterId, int? popId) 

UPDATE: 經進一步討論後,似乎瀏覽器未填寫或者IE正在批准您的TempData對象。也許發佈一些關於這個過程的更多信息。

+1

這將如何解釋* IE的工作原理*?這將如何解決問題?是的,他可能不會得到一個例外,但是他會在控制器動作中得到null,我認爲這不是我們想要的。 –

+0

我會想象發生的事情是IE瀏覽器正在填充你的'TempData'對象,而Chrome瀏覽器沒有。因此,它的問題是空的,當它到達你的'EditEncounter'方法時,它看到的參數是必需的,而不是'可空的'。也許你可以發佈更多的代碼來查看'TempData'的填充方式和使用方法。可能有些事情是Chrome不喜歡的。 –

+1

'TempData'是一個服務器端變量。這不是填充它的瀏覽器。 –

1

我有一個類似的問題,但能夠通過將我的Url.Action封裝在一個Html.Raw中去掉它,根據this solution希望有人找到這方面的幫助。