Internet explorer Asp.net MVC 4:Chrome中有错误,Internet explorer中没有错误

Internet explorer Asp.net MVC 4:Chrome中有错误,Internet explorer中没有错误,internet-explorer,google-chrome,asp.net-mvc-4,asp.net-mvc-routing,Internet Explorer,Google Chrome,Asp.net Mvc 4,Asp.net Mvc Routing,我不知道这里发生了什么事 我有一个在jquery脚本中调用的操作方法,我有 ondblClickRow: function (id) { debugger; var dummyURL ='@Url.Action("EditEncounter", "EditEncounter", new { encounterId = 0, popId = (int)TempDa

我不知道这里发生了什么事

我有一个在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"] }'
                    }
出于某种原因,当我尝试使用chrome通过此路径导航到此页面时,我遇到以下异常:

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中,我调用action方法,并在没有意外的情况下导航到适当的页面。我一定错过了什么

已更新 我注意到我得到了这个查询字符串

encounterId=2245&popId=2
注意“
&
”和“
amp'。我认为我的路线设置不正确。我会尝试一些事情,让你们知道会发生什么

确认

这是我在internet explorer中使用的路径

encounterId=2245&popId=2
它是有效的。我只想弄清楚为什么这个特殊的请求会发生这种情况

更新


Visual studio没有更新在我尝试调试程序时生成的cshtml文件。每个人都经历过这种情况,以及如何度过它?

您是否尝试过将
popId
设置为
nullable
类型?听起来它不喜欢您的可选参数是整数而不是可为空的整数。当然,我看不到您的控制器和视图,但这是错误消息告诉我的。见下文

添加
int?
而不是
int

因此,您的
ViewResult
控制器中需要有可为空的参数:

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

更新:
经过进一步讨论,Chrome似乎没有在IE运行时填充或批准您的
TempData
对象。也许可以发布更多关于这个过程的信息

我也遇到了类似的问题,但通过将我的Url.Action封装在一个Html.Raw中解决了这个问题,该Html.Raw去掉了amp;希望有人能在这方面找到帮助。

你在Chrome开发者工具栏的
网络
选项卡上看到了什么?正在请求什么url?是正确的吗?另外,当您检查页面的HTML时,标记中的
dummyURL
值是多少。还有最后一个问题:
dummyURL.replace(“-2”,id)
行是怎么回事?您是否将此
id
变量的值记录在方法中?另外,您似乎正在使用TempData,因为您知道,如果已发出正在读取TempData的中间请求,它可能会被逐出。例如,这可能是一个AJAX请求,我确保tempdata字段是水合的。这条线是为了在某个事件被触发后,我可以得到一条准确的路线来导航。我将使用chrome检查html流量。这将如何解释IE的工作原理?这将如何解决问题?是的,他可能不会得到一个异常,但他会在控制器操作中得到null,我想这不是这里想要的。我可以想象发生的事情是IE正确地填充了你的
TempData
对象,而Chrome没有。因此,当它到达
editConference
方法时,它会看到参数是必需的,而不是
null
。也许您可以发布更多的代码,看看
TempData
是如何填充的,在哪里填充的,以及使用了哪些方法。可能有一些Chrome不喜欢的东西。
TempData
是一个服务器端变量。填充它的不是浏览器。你能发布代码吗?我想象如果你将
TempData
转储到Chrome上的屏幕上,它将返回
null
信息,而IE显然会包含对象数据。如果TempData不包含值,则在渲染视图时,他将获得InvalidCastException,因为他正在将其强制转换为
(int)
。这里看起来不像是这样。显然,如果OP能稍微调试一下他的代码,并提供更多的信息,这样我们就不必在这里猜测了。