使用保留字 "action" 作为 MVC 参数名称
Using reserved word "action" as an MVC parameter name
提供有关我的平台的详细信息。我在 .NET Core Web 项目中使用 Visual Studio 2017。
我正在为我无法更改客户端的客户端实施新的后端。我正在尝试使用 MVC 来完成此操作。
我想提取以下值:
- sessionId
- 传送门
- 行动
- 代币
因为它们都有意义。
我在我的项目中创建了一个名为 "Portal" 的新视图文件夹,并创建了一个名为 "PortalController" 的新 MVC 控制器。
我创建了一个名为 gateway.cshtml 的新视图,还实现了以下功能 ->
public IActionResult Gateway(string sessionId, string portal, string action, string token)
{
ViewData["Message"] = "Gateway";
return View();
}
当我在函数内设置断点时,我收到上面提供的 URL 的以下值 ->
sessionId "0A6405100000001D04FB55FE" string
portal "4ba457d0-e371-11e6-92ce-005056873bd0" string
action "gateway" string
token "3fcbc246bb3c35a5fa8055fec6bbf431" string
从调试器的输出中可以看出,对于名为 "action" 的参数,我没有收到客户端传递的值 "cwa",而是收到了名称 [=54] =] 由 MVC 作为动作名称传递。
是否有 "proper way" 处理此问题?
我宁愿避免更改 startup.cs 文件中的路由,因为这会损害代码的模块化。我欢迎可用于重新路由参数名称的属性。
我能看到的另一种选择(买家无法弄清楚)是简单地使用 HTTP 请求来读取我感兴趣的值,而不是使用函数参数。
非常感谢您提供的任何帮助!
在 .Net Core 中,您可以使用
直接从 Request
获取 action
参数值
var action= Request.Query["action"];
它在 .Net Framework 中的位置
var action= Request.QueryString["action"];
提供有关我的平台的详细信息。我在 .NET Core Web 项目中使用 Visual Studio 2017。
我正在为我无法更改客户端的客户端实施新的后端。我正在尝试使用 MVC 来完成此操作。
我想提取以下值:
- sessionId
- 传送门
- 行动
- 代币
因为它们都有意义。
我在我的项目中创建了一个名为 "Portal" 的新视图文件夹,并创建了一个名为 "PortalController" 的新 MVC 控制器。
我创建了一个名为 gateway.cshtml 的新视图,还实现了以下功能 ->
public IActionResult Gateway(string sessionId, string portal, string action, string token)
{
ViewData["Message"] = "Gateway";
return View();
}
当我在函数内设置断点时,我收到上面提供的 URL 的以下值 ->
sessionId "0A6405100000001D04FB55FE" string
portal "4ba457d0-e371-11e6-92ce-005056873bd0" string
action "gateway" string
token "3fcbc246bb3c35a5fa8055fec6bbf431" string
从调试器的输出中可以看出,对于名为 "action" 的参数,我没有收到客户端传递的值 "cwa",而是收到了名称 [=54] =] 由 MVC 作为动作名称传递。
是否有 "proper way" 处理此问题?
我宁愿避免更改 startup.cs 文件中的路由,因为这会损害代码的模块化。我欢迎可用于重新路由参数名称的属性。
我能看到的另一种选择(买家无法弄清楚)是简单地使用 HTTP 请求来读取我感兴趣的值,而不是使用函数参数。
非常感谢您提供的任何帮助!
在 .Net Core 中,您可以使用
直接从Request
获取 action
参数值
var action= Request.Query["action"];
它在 .Net Framework 中的位置
var action= Request.QueryString["action"];