Asp.net mvc 3 显示MVC视图页面时出错

Asp.net mvc 3 显示MVC视图页面时出错,asp.net-mvc-3,Asp.net Mvc 3,我的MVC应用程序中出现错误。虽然我在开发环境中没有遇到以下错误,甚至连功能都没有中断,但在IIS服务器上部署它时,我是通过elmah通过数据库中相应条目的电子邮件得到此错误的 The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult DetailSmallForeign

我的MVC应用程序中出现错误。虽然我在开发环境中没有遇到以下错误,甚至连功能都没有中断,但在IIS服务器上部署它时,我是通过elmah通过数据库中相应条目的电子邮件得到此错误的

The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult DetailSmallForeignWidget(System.String, Int32, System.String, System.Nullable`1[System.Int32], System.Nullable`1[System.DateTime], System.Nullable`1[System.Int32], System.String, System.String)' in 'BAR.Web.Controllers.ForeignRestaurantWidgetController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
在使id参数为null之后,我知道相应的操作方法将被调用两次。查看代码看起来不错,但不知道为什么会发生这种情况

操作方法的路径如下所示:

_routes.MapRoute(null, "widget/DetailWidget/{name}/{id}/{langID}/", 
    new { controller = "Widget", action = "DetailWidget" }, 
    new[] { "BAR.Web.Controllers" });
public override ActionResult DetailWidget(
    string name, 
    int id, 
    string refCode, 
    int? partySize,
    DateTime? when, 
    int? sittingTimeId, 
    string time, 
    string langID)

<script type="text/javascript" src="http://localhost/widget/IncludeWidget/Street/205/iframe/ja-JP" ></script>
功能签名如下:

_routes.MapRoute(null, "widget/DetailWidget/{name}/{id}/{langID}/", 
    new { controller = "Widget", action = "DetailWidget" }, 
    new[] { "BAR.Web.Controllers" });
public override ActionResult DetailWidget(
    string name, 
    int id, 
    string refCode, 
    int? partySize,
    DateTime? when, 
    int? sittingTimeId, 
    string time, 
    string langID)

<script type="text/javascript" src="http://localhost/widget/IncludeWidget/Street/205/iframe/ja-JP" ></script>
内部Includewidget函数。代码如下所示:

ContentResult content = new ContentResult();
string url = Url.ToAbsoluteUrl(string.Format("widget/DetailWidget/{0}/{1}/{2}", name, id.Value, langID), true);
content.Content = @"document.write('<iframe src=""" + url + @""" width=""300"" height=""430""  style=""border: none;"" frameborder=""0""></iframe>')";
content.ContentType = "text/javascript";
return content

我尝试重命名路由参数,并尝试从视图页面编写引用脚本,但基于新的参数名称,它仍然显示相同的错误。如何解决此问题?

您必须显示调用此控制器操作的代码。如果您使用的是AJAX,请显示相应的javascript文件。如果您没有使用AJAX,请显示相应的视图。好的,现在您希望我猜这个ja JP脚本中有什么?或者你可以更新你的问题并在这里展示?请不要使用注释部分发布代码片段,因为它们无法正确格式化。继续编辑你的问题。Darin,ja JP只是用于初始化区域性的参数。这不是剧本。我更新了问题,以便更清楚地了解我的问题