我不知道这是怎么回事。
我有一个在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没有更新在我尝试调试程序时生成的cshtml文件。每个人都经历过这件事,以及如何度过这一难关?
发布于 2014-03-27 23:07:49
我有一个类似的问题,但能够解决这个问题,但通过将我的Url.Action封装在一个Html.Raw中,它摆脱了this solution希望,有人在这方面找到了帮助。
发布于 2013-01-14 21:33:10
您是否尝试过将popId设置为nullable类型?听起来它不喜欢您的可选参数是一个整数,而不是一个可空整数。当然,我看不到你的控制器和视图,但这是错误信息告诉我的。见下文。
添加一个int?而不是int
因此,您的ViewResult需要在控制器中具有可空参数:
public ViewResult EditEncounter(int? encounterId, int? popId)更新:经过进一步讨论,Chrome似乎没有填充或批准您的TempData对象,而IE是。也许可以发布更多关于这个过程的信息。
https://stackoverflow.com/questions/14327012
复制相似问题