标签: query-string

替换查询字符串中的项目

我有一个URL也可能有一个查询字符串部分,查询字符串可能是空的或有多个项目.

我想替换查询字符串中的一个项目,或者如果该项目尚不存在则添加它.

我有一个带有完整URL的URI对象.

我的第一个想法是使用正则表达式和一些字符串魔法,应该这样做.

但它似乎有点摇摇欲坠,也许框架有一些查询字符串构建器类?

c# asp.net query-string

14
推荐指数
4
解决办法
3万
查看次数

URL Querystring - 查找,替换,添加,更新值?

我们从另一家公司继承了一些C#代码作为项目的一部分,该公司执行URL重定向,根据需要修改现有查询字符串,更改项目值,添加新参数等.但问题是代码充其量只是错误,最终会复制查询字符串中的项目而不是正确更新它们.该代码适用于第一次通过,但在其他调用时,重复问题变得明显.

例如:MyPage.aspx?startdate = 08/22/09&startdate = 09/22/09

它不需要复制项目,而是需要使用新值(如果已存在)进行更新,或者如果不存在则添加.

是否有一个C#类或一组函数来处理查询字符串,允许一种简单的方法来访问和更新/添加解决这些问题的参数,而不是现在似乎在使用代码的盲添加方法?这需要能够处理可能始终存在或不存在的多个参数,并在后续调用中添加和更新.

我们将尽快使用现有逻辑,而不是在可能的情况下重新创建某些内容,以便以半标准方式快速解决此问题,以便将来进行可维护性和重用.

c# url query-string

14
推荐指数
1
解决办法
3万
查看次数

amazon S3存储桶策略 - 限制referer的访问但不限制是否通过查询字符串身份验证生成URL

我的存储桶上设置了以下存储桶策略:

{

"Version": "2008-10-17",

"Id": "My access policy",

"Statement": [

     {

 "Sid": "Allow only requests from our site",

 "Effect": "Allow",

 "Principal": { "AWS": "*"},

 "Action": "s3:GetObject",

 "Resource": "arn:aws:s3:::my_bucket/*",

 "Condition": {

   "StringLike": {

      "aws:Referer": [" http://mydomain.com/*"," http://www.mydomain.com/*"]

        }

              }

 },

{

   "Sid": "Dont allow direct acces to files  when no referer is present",

   "Effect": "Deny",

   "Principal": {"AWS": "*" },

  "Action": "s3:GetObject",

  "Resource": "arn:aws:s3:::my_bucket/*",

  "Condition": {

  "Null": {"aws:Referer": true }

         }

         }

]

  }
Run Code Online (Sandbox Code Playgroud)

我还配置了查询字符串身份验证,但看起来我不能同时拥有它们.如果我将我的存储桶策略设置为拒绝任何不是源自mydomain的请求,则使用查询字符串身份验证的临时URL也将无法提供.所以我的问题是,我怎么能同时拥有这两个?有没有办法检查url参数,看看它是否有一个名为"Signature"的参数,在这种情况下不应用引用策略?

policy amazon amazon-s3 bucket query-string

14
推荐指数
1
解决办法
1万
查看次数

CheckBox的MV3重复查询字符串值(true,false表示布尔值)

我创建了一个相当直接的页面,其中包含一个复选框:

@using (Html.BeginForm("MyController", "MyAction", FormMethod.Get))
{
  @Html.CheckBoxFor(x => x.MyCheckBox)
  <input type="submit" value="Go!" />      
}
Run Code Online (Sandbox Code Playgroud)

URL填充MyCheckBox值两次!?因此:

MyAction?MyCheckBox=true&MyCheckBox=false
Run Code Online (Sandbox Code Playgroud)

如果复选框为true,它仅复制值.如果设置为false,它将仅在查询字符串中出现一次.

上面的代码是简化的,因为我有一些下拉菜单和表单上的文本框工作正常.我不认为我从这个问题中遗漏的代码有什么不寻常之处.

有没有人有类似的问题与查询字符串参数重复?

query-string razor asp.net-mvc-3

14
推荐指数
1
解决办法
4541
查看次数

HttpUtility.ParseQueryString()始终将特殊字符编码为unicode

当我从System.Web使用HttpUtility时,我发现每次调用方法.ParseQueryString我都有特殊的字符编码到他们的unicode等效表示.我尝试了许多不同的编码类型,似乎都产生了相同的结果.我的代码示例如下:

string text = "ich möchte diese Bild für andere freigeben"
var urlBuilder = new UriBuilder(url);
var query = HttpUtility.ParseQueryString(urlBuilder.Query, Encoding.UTF8);
query["text"] = text;    
urlBuilder.Query = query.ToString();
string finalUrl = urlBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)

finalUrl我将从中收到的字符串将是:

文本= ICH + M%u00f6chte + diese +图片报+ F%u00fcr + ANDERE + freigeben

我尝试过使用Encoding.UTF8,Encoding.ASCII并且Encoding.Default它们都产生相同的结果.我该怎么做才能达到我想要的UrlEncoding格式:

文本= ICH%20米%C3%B6chte%20diese%20Bild%20F%C3%BCR%20andere%20freigeben

一如既往,提前感谢您的帮助/建议!

c# asp.net http query-string

14
推荐指数
3
解决办法
7824
查看次数

CodeIgniter current_url不显示查询字符串

嗨,我正在尝试将我当前的URL存储在会话变量中.

我的应用使用了www.domain.com/add?url=http://www.google.com等查询字符串

但是current_url()返回'ww.domain.com/add'.没有查询字符串的网址.

我检查了帮助文件,current_url似乎只是将uri段附加到配置中设置的site_url.

    function current_url()
{
    $CI =& get_instance();
    return $CI->config->site_url($CI->uri->uri_string());
}
Run Code Online (Sandbox Code Playgroud)

任何人都知道我如何抓住查询字符串来追加它们,甚至只是抓住整个网址.

php uri codeigniter query-string

13
推荐指数
2
解决办法
2万
查看次数

从URL字符串中提取查询字符串

我正在阅读历史,我希望当我遇到谷歌查询时,我可以提取查询字符串.我没有使用请求或httputility,因为我只是解析一个字符串.但是,当我遇到这样的URL时,我的程序无法正确解析它:

http://www.google.com.mt/search?client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&channel=s&hl=mt&source=hp&biw=986&bih=663&q=hotmail&meta=&btnG=Fittex+bil-Google

我试图做的是得到q =的索引和&的索引,并取两者之间的单词,但在这种情况下,&的索引将小于q =,它会给我错误.

有什么建议?

谢谢你的答案,一切似乎都很好:) ps我不能使用httputility,不是我不想.当我添加对system.web的引用时,不包括httputility!它只包含在asp.net应用程序中.再次感谢

c# string query-string

13
推荐指数
3
解决办法
3万
查看次数

在aurelia中使用路由器时如何设置/读取查询字符串?

使用aurelia.io框架路由器时,读取和设置查询字符串的首选方法是什么?

例如,在网址中: http://www.myapp.com/#/myroute1/?s=mystate

我如何阅读和设置?s=mystate网址的一部分并让aurelia路由器正确导航并记住该状态,这样每当我到达我的route1viewmodel时,我都可以读取该状态变量并对其执行某些操作?

javascript query-string aurelia aurelia-navigation aurelia-router

13
推荐指数
1
解决办法
7608
查看次数

如何使ASP.NET停止将null解释为字符串

我有一个Web API方法:

public List<Task> GetTasks([FromUri] TaskFilter filter)
{

}
Run Code Online (Sandbox Code Playgroud)

该方法具有带可空标识符列表的参数:

public class TaskFilter
{
  public IList<int?> Assignees { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我打电话的时候:

GET /tasks?assignees=null
Run Code Online (Sandbox Code Playgroud)

服务器返回错误:

{
  "message":"The request is invalid.",
  "modelState": {
    "assignees": [ "The value 'null' is not valid for Nullable`1." ]
  }
}
Run Code Online (Sandbox Code Playgroud)

它只有在我传递空字符串时才有效:

GET /tasks?assignees=
Run Code Online (Sandbox Code Playgroud)

但是标准查询字符串转换器(来自JQuery, Angular等)不能以这种方式使用空值.

如何让ASP.NET解释'null'null

Upd:查询字符串可以包含多个标识符,例如:

GET /tasks?assignees=1&assignees=2&assignees=null
Run Code Online (Sandbox Code Playgroud)

Upd2: JQuery将数组中的空值转换为空字符串,ASP.NET将它们解释为null.所以问题是从Angular 1.6($HttpParamSerializerProvider)调用WebAPI

Upd3:我知道解决方法,但我没有要求它们.我想要一个特定问题的解决方案:

  • 这是一种GET方法
  • 方法接受来自Uri的列表
  • 列表可以包含null
  • 这应该是List<int?>因为API文档是自动生成的,我不希望将文本数组视为参数类型
  • 默认情况下,ASP.NET期望空字符串为空值(JQuery.param …

asp.net query-string asp.net-web-api

13
推荐指数
2
解决办法
695
查看次数

Next.js 路由器在第一次渲染时返回未定义的查询参数?

我的 Next.js 应用程序上有一个页面执行以下操作:

  • 这是一个搜索页面
  • 路径名类似于:/search?q=search+slug
  • 它在客户端加载数据
  • 它需要读取router.query来获取router.query.q

PS:我正在使用Redux

  const dispatch = useDispatch();
  const router = useRouter();
  const query = router.query as { q: string };
  const queryString = query.q;

  console.log("SEARCH CONTAINER");
  console.log(`queryString: ${queryString}`);

  useEffect(() => {
    dispatch(THUNK.LOAD(queryString));
    return () => { dispatch(ACTION.RESET_STATE()); };
  },[dispatch,queryString]);
Run Code Online (Sandbox Code Playgroud)

请参阅useEffect. 理论上应该只为每个运行一次queryString(实际上是req.query.q)。

但我得到了重复的THUNK.LOAD动作。这就是为什么我console.log()在那里添加了。

这就是它注销的内容:

在此输入图像描述

进而:

在此输入图像描述

这就是为什么我收到重复的派遣的原因。当然我可以if (queryString)在发货前检查一下,或者也许我可以从 获取window.location.search。但令我惊讶的是,它一开始router.query.q就出现了。undefined这怎么可能呢?为什么要req.query异步填充对象?对此有何解释?

query-string reactjs next.js

13
推荐指数
2
解决办法
2万
查看次数