提供有关我的平台的详细信息。我正在使用Visual Studio 2017和.NET Core Web项目。
我正在为客户端实现一个新的后端,我无法改变客户端。我试图使用MVC来实现这一目标。
我必须能够回复的网址是 - > https://my.server.com:8443/portal/gateway?sessionId=0A6405100000001D04FB55FE&portal=4ba457d0-e371-11e6-92ce-005056873bd0&action=cwa&token=3fcbc246bb3c35a5fa8055fec6bbf431
我想提取以下值:
因为他们都有意义。
我在我的项目中创建了一个名为“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”,而是接收名称“gateway”,它由MVC传递为行动的名称。
有没有“正确的方法”处理这个?
我宁愿避免更改startup.cs文件中的路由,因为这会损害代码的模块性。我欢迎可用于重新路由参数名称的属性。
我能看到的另一种选择(买不起)就是简单地利用HTTP请求来读取我感兴趣的值,而不是使用函数参数。
非常感谢您提供的任何帮助!
答案 0 :(得分:0)
在.Net Core中,您可以使用
直接从action
获取Request
参数值
var action= Request.Query["action"];
在.Net Framework中的位置
var action= Request.QueryString["action"];