gpt4 book ai didi

.net - 我如何传递代表一个操作方法参数的两个不同的查询字符串参数?

转载 作者:行者123 更新时间:2023-12-04 06:57:56 25 4
gpt4 key购买 nike

我有一个像下面这样的 Action 方法

public JsonResult Index(string version)
{
.. do stuff, return some data v1 or v2. Default = v2.
}

因此,此操作方法返回一些数据,可以将其格式化为 Version 1Version 2 (无论输出是什么......只要知道它们在原理上是不同的)。

因此,当用户想要调用访问此资源时,他们会执行以下操作:
http://www.blah.com/api/Index

没什么太难的。

他们也可以这样做...
http://www.blah.com/api/Index?version=1.0

但是,是否可以使用户可以使用查询字符串参数 versionv
eg. http://www.blah.com/api/Index?v=1.0 

这将填充 ActionMethod 中的 version 参数。可能的?

最佳答案

我猜你可以使用 Action 过滤器来操作 Action 方法参数。

基本上只需检查 QueryString 中的“v”集合,如果存在,则将其丢入 ActionParameters收藏。

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var version = filterContext.HttpContext.Request.QueryString["v"];
if (!string.IsNullOrEmpty(version))
filterContext.ActionParameters["version"] = version;
}

HTH,
查尔斯

编辑:让它更通用一点......
public class QueryStringToActionParamAttribute : ActionFilterAttribute
{
private string _queryStringName;
private string _actionParamName;

public QueryStringToActionParamAttribute(string queryStringName, string actionParamName)
{
_queryStringName = queryStringName;
_actionParamName = actionParamName;
}

public override void OnActionExecuting(ActionExecutedContext filterContext)
{
var queryStringValue = filterContext.HttpContext.Request.QueryString[_queryStringName];
if (!string.IsNullOrEmpty(queryStringValue))
{
filterContext.ActionParameters[_actionParamName] = queryStringValue;
}
}
}

然后你可以这样称呼它:
[QueryStringToActionParam("v", "version")];

关于.net - 我如何传递代表一个操作方法参数的两个不同的查询字符串参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com