0

我不确定这里发生了什么。

我有一个在我拥有的 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 文件。任何人都经历过这个以及如何得到它?

4

2 回答 2

1

我有一个类似的问题,但能够通过将我的 Url.Action 包含在摆脱 amp 的 Html.Raw 中来解决这个问题;根据这个解决方案希望有人能找到帮助。

于 2014-03-27T23:07:49.443 回答
0

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

添加一个int?而不是int

所以你ViewResult需要在你的控制器中有可以为空的参数:

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

更新:经过进一步讨论,Chrome 似乎没有填写或批准您的TempData对象,而 IE 是。也许发布有关此过程的更多信息。

于 2013-01-14T21:33:10.273 回答