我在我的一个模块中创建了一个这样的页面 - / OrchardLocal / Module1 / Controller1 / Action1。它需要一个id参数。
如果id像这样传递,该页面有效 - / OrchardLocal / Module1 / Controller1 / Action1 / 7
但是如果我在querystring中传递id,我会收到错误 - / OrchardLocal / Module1 / Controller1 / Action1?id = 7
“参数字典包含非可空类型'System.Int32'的参数'id'的空条目”
我不必使用查询字符串。但是我想知道为什么它不起作用,我怎样才能使它与querystring一起工作。
由于
[编辑]
这是行动方法。
public ActionResult Action1(int id)
{
...
}
这就是我在Routes.cs中所拥有的。
new RouteDescriptor {
Priority = 6,
Route = new Route("Action1/{id}",
new RouteValueDictionary{{"area", "Module1"},{"controller","Controller1"},{"action","Action1"}},
new RouteValueDictionary(),
new RouteValueDictionary{{"area", "Module1"}},
new MvcRouteHandler())
}
答案 0 :(得分:2)
这是路由问题,而不是Orchard。如果您将id param设置为optional:
,这应该有效Route = new Route(
"Action1/{id}",
new RouteValueDictionary {
{"area", "MyModule"},
{"controller", "Controller1"},
{"action", "Action1"}
, { "id", UrlParameter.Optional}
},
new RouteValueDictionary(),
new RouteValueDictionary {{"area", "MyModule"}},
new MvcRouteHandler()
)
注意:优先级为6,我无法重现您的错误。可能是因为您使用的是早期版本的Orchard。我在1.4。如果Priority = 100,我可以重新编写您的错误,然后上面的更改修复了它。