对控制器的 Action 方法的调用有什么问题
当我将用户重定向到此网址
http://localhost:34768/Module/Edit?versionId=f4592b62-17e4-47e1-8a08-6a927a1c895e?selectedTab=0&selectedRowId=4c1fb4a6-691f-4c03-9e67-8f8b10a95c0e< /code>
我会收到以下错误:
参数字典包含一个 参数“versionId”的空条目 不可为 null 的类型“System.Guid” 方法'System.Web.Mvc.ActionResult 编辑(系统.Guid, System.Nullable
1[System.Int32], System.Nullable
1[System.Guid], System.String)' 中 'ParKone.Controllers.ModuleController'。 可选参数必须是 引用类型、可为 null 的类型,或者是 声明为可选参数。 参数名称:参数
我的控制器操作如下所示:
public ActionResult Edit(Guid versionId, int? selectedTab, Guid? expandedRowId, string url = "")
我不明白为什么 versionId
没有通过。如果我写这个 Url 那么它就可以顺利工作。
http://localhost:34768/Module/Edit? versionId=f4592b62-17e4-47e1-8a08-6a927a1c895e
有什么想法吗?
更新
我在 Web.config 中有这样的行
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
When I Redirect user to this Url
http://localhost:34768/Module/Edit?versionId=f4592b62-17e4-47e1-8a08-6a927a1c895e?selectedTab=0&selectedRowId=4c1fb4a6-691f-4c03-9e67-8f8b10a95c0e
I'll get following error:
The parameters dictionary contains a
null entry for parameter 'versionId'
of non-nullable type 'System.Guid' for
method 'System.Web.Mvc.ActionResult
Edit(System.Guid,
System.Nullable1[System.Int32],
1[System.Guid],
System.Nullable
System.String)' in
'ParKone.Controllers.ModuleController'.
An optional parameter must be a
reference type, a nullable type, or be
declared as an optional parameter.
Parameter name: parameters
My controller action looks like this:
public ActionResult Edit(Guid versionId, int? selectedTab, Guid? expandedRowId, string url = "")
I don't understand why versionId
is not coming through. If I write this Url then it works smoothly.
http://localhost:34768/Module/Edit?versionId=f4592b62-17e4-47e1-8a08-6a927a1c895e
Any ideas?
Update
I have this kind of line in the Web.config
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的网址中有两个 ?,因此路由将从第二个 ? 中获取您的参数。这 ?用作参数和 URL 的分隔符,因此路由似乎从第二个 ? 之后的查询字符串部分获取参数。
You have two ?'s in your url and so the routing is picking up your parameters from the second ?. The ? is used as a separator of your parameters and your URL and so it seems that the routing takes the parameters, in this case, from the portion of the querystring after the second ?.