当前位置: 首页 > news >正文

Asp.net core 学习笔记 (操作 url and query params)

更新 :2018-7-25

直接添加 query string.

var resetPasswordLink = QueryHelpers.AddQueryString($"{Request.Scheme}://{Request.Host.Value}{forgotPasswordData.resetPasswordUrl}", "token", token);

 

 

refer : https://benjii.me/2017/04/parse-modify-query-strings-asp-net-core/

build-in 的功能哦. 

using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.AspNetCore.WebUtilities;

public IActionResult About()
{
    string currentFullUrl = $"{Request.Scheme}://{Request.Host}{Request.Path}{Request.QueryString}";            
    var uri = new Uri(currentFullUrl);
    var baseUri = uri.GetComponents(UriComponents.Scheme | UriComponents.Host | UriComponents.Port | UriComponents.Path, UriFormat.UriEscaped);
    var query = QueryHelpers.ParseQuery(uri.Query);
    var items = query.SelectMany(x => x.Value, (col, value) => new KeyValuePair<string, string>(col.Key, value)).ToList();
    var pageItem = items.FirstOrDefault(i => i.Key == "page"); // 是可以有多个的哦.
    if (pageItem.Key != null) // 判断是否有 
    {
        int page = Convert.ToInt32(pageItem.Value); 
    }
    items.RemoveAll(x => x.Key == "key");  
    items.RemoveAll(x => x.Key == "key" && x.Value == "value");  
    var qb = new QueryBuilder(items);
    qb.Add("newKey", "newValue");
    var newUrl = baseUri + qb.ToQueryString();
    return View();
}

part 2 

UriBuilder uriBuilder = new UriBuilder();
uriBuilder.Scheme = Request.Scheme;
uriBuilder.Host = Request.Host.Host;
if (Request.Host.Port.HasValue)
{
    uriBuilder.Port = Request.Host.Port.Value;
}
uriBuilder.Path = forgotPasswordData.resetPasswordPath;
var queryBuilder = new QueryBuilder();
queryBuilder.Add("token", token);
uriBuilder.Query = queryBuilder.ToString();
var url = uriBuilder.ToString();

 

 

以上

 

转载于:https://www.cnblogs.com/keatkeat/p/9024022.html

相关文章:

  • 曼哈特公司为澳大利亚著名药店零售集团提供全渠道解决方案
  • DotNet菜鸟入门之无限极分类(一)设计篇
  • Python 异常处理
  • 解决Geoserver请求跨域的几种思路,第二种思路用过
  • CentOS的rpm常用命令(转)
  • 怎样将apache和nginx的源码包转换为rpm包?
  • 03 逻辑与结构
  • QA质量意识
  • oracle,mongodb数据处理相关
  • 把SVN库,作为git服务器
  • Kali之aircrack-ng
  • Android 面试2018最新最全
  • js中添加node.js语法支持
  • 理解CAS算法在JAVA中的作用
  • 单体架构,SOA架构,微服务架构,分布式架构,集群架构
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • AngularJS指令开发(1)——参数详解
  • C语言笔记(第一章:C语言编程)
  • docker容器内的网络抓包
  • Flex布局到底解决了什么问题
  • GraphQL学习过程应该是这样的
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • nginx 负载服务器优化
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • session共享问题解决方案
  • Shadow DOM 内部构造及如何构建独立组件
  • vue总结
  • Windows Containers 大冒险: 容器网络
  • Yeoman_Bower_Grunt
  • 程序员最讨厌的9句话,你可有补充?
  • ------- 计算机网络基础
  • 讲清楚之javascript作用域
  • 删除表内多余的重复数据
  • 十年未变!安全,谁之责?(下)
  • 推荐一个React的管理后台框架
  • 小程序开发之路(一)
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 第二十章:异步和文件I/O.(二十三)
  • ​520就是要宠粉,你的心头书我买单
  • ​Python 3 新特性:类型注解
  • ​ubuntu下安装kvm虚拟机
  • ​如何防止网络攻击?
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • ${ }的特别功能
  • (+4)2.2UML建模图
  • (1)STL算法之遍历容器
  • (C语言)fread与fwrite详解
  • (libusb) usb口自动刷新
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (规划)24届春招和25届暑假实习路线准备规划
  • (篇九)MySQL常用内置函数
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)WLAN定义和基本架构转
  • (一)基于IDEA的JAVA基础12