首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当传递参数包含点时,asp.net mvc路由

当传递参数包含点时,ASP.NET MVC 路由可能会遇到问题,因为点(.)被视为路由参数的分隔符。为了解决这个问题,可以使用以下方法:

  1. 使用 UrlEncode 和 UrlDecode 方法对参数进行编码和解码。

在将参数传递到路由时,可以使用 HttpUtility.UrlEncode() 方法对参数进行编码,以避免路由解析中的问题。例如:

代码语言:csharp
复制
var encodedParam = HttpUtility.UrlEncode(param);

然后,在接收到参数时,可以使用 HttpUtility.UrlDecode() 方法对参数进行解码。例如:

代码语言:csharp
复制
var decodedParam = HttpUtility.UrlDecode(encodedParam);
  1. 使用 RouteAttribute 属性来指定路由模板。

在 Controller 或 Action 方法上使用 RouteAttribute 属性,可以指定路由模板,以便更好地处理参数中的点。例如:

代码语言:csharp
复制
[Route("api/products/{id}")]
public ActionResult GetProduct(string id)
{
    // 获取产品并返回结果
}

在这个例子中,路由模板中的 {id} 参数将匹配任何字符串,包括包含点的字符串。

  1. 使用 UrlPathEncodeUrlPathDecode 方法对参数进行编码和解码。

在将参数传递到路由时,可以使用 Uri.EscapeDataString()Uri.UnescapeDataString() 方法对参数进行编码和解码。例如:

代码语言:csharp
复制
var encodedParam = Uri.EscapeDataString(param);

然后,在接收到参数时,可以使用 Uri.UnescapeDataString() 方法对参数进行解码。例如:

代码语言:csharp
复制
var decodedParam = Uri.UnescapeDataString(encodedParam);

这些方法可以确保点字符在路由参数中被正确处理,从而避免了路由问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC Autofac依赖注入的一小心得(包含特性注入)

前言 IOC的重要性 大家都清楚..便利也都知道..新的ASP.NET Core也大量使用了这种手法.. 一直憋着没写ASP.NET Core的文章..还是怕误导大家.....PropertiesAutowired()的意思就是采用属性注入的方式 3.特性注入 我们在使用MVC的时候,肯定会用到特性..肯定会有一些自己定义的特性..那么这些特性里面要用到相关的服务,该怎么注入呢...你没看错..MVC里面就一句话就行了..特性里面就可以取到想要的服务了..(注:WebAPI不可以,具体请查官方文档) 4.生成容器并提供给MVC 代码如下: //通过容器配置生成容器....var container = builder.Build(); //提供给MVC DependencyResolver.SetResolver(new AutofacDependencyResolver...整个项目公用一个 InstancePerRequest() 嗯..针对MVC的,或者说是ASP.NET的..每个请求单例  到此就结束了.

2K100

Asp.net web api 知多少

您想创建一个可以使用快速传输通道的服务,请选择WCF,如TCP,命名管道,或者甚至UDP(在WCF 4.5),并且所有其他通道不可用时能够支持HTTP传输信道。...您要通过HTTP创建面向资源的服务选择WEB API,因为其可以使用完整的 HTTP的特性(如URI,请求/响应头,缓存,版本控制,各种内容格式)。...ASP.NET WEB API 路由ASP.NET MVC 路由有什么区别? Ans. ASP.NET MVCASP.NET WEB API 使用路由来监控传入的请求。...主要的区别有以下几点: 在WEB API 路由模式中 {action}参数是可选的,但是你可以自行包含 一个 {action} 参数。在ASP.NET MVC中 {action} 参数是强制的。...不像ASP.NET MVC,Web API仅能接收一个复杂类型作为参数。 Q14. ASP.NET WEB API2中如何启用特性路由? Ans.

4.8K50
  • ASP.NET MVC 5 - 控制器

    改变您的Welcome 方法来包含两个参数,如下所示。需要注意的是,示例代码使用了C#语言的可选参数功能,numTimes参数在不传值,默认值为1。...MVC应用程序,通过参数传递路由数据是为更典型的应用(如同上面用query string传递 ID参数)。...您还可以增加一条路由传递name 和numtimes ,在路由数据在URL中的参数。...让我们来看看下面我们如何能做到这一吧。 控制器是MVC中的重要组成部分,有了本节知识的学习,相信大家会更加深入地理解MVC。那么在MVC开发过程中,除了以上知识之外,还可以借助哪些工具呢?...ASP.NET MVC 5 - 将数据从控制器传递给视图 5. ASP.NET MVC 5 - 添加一个模型 6.

    2.6K80

    Asp.net mvc 知多少(二)

    Asp.net mvc 中的ViewModel? Ans. 在 ASP.NET MVC中, ViewModel 是一个包含将在强类型视图中展示的字段的类。...它是用来将数据从Controller传递到强类型视图中。 ViewModel的关键: ViewModel 包含在视图中呈现的字段。...Action Execution (Action执行)– 该环节按以下顺序执行: Controller初始化后,Controller通过传递选择的action方法详情调用它自己的InvokeAction...仅仅定义了特性路由而没有基于约定的路由,若某个action未定义特性路由,该action将不能被成功路由,会返回404。 Q18. 什么时候使用特性路由? Ans....Mvc应用程序第一次启动,global.asax类中的Application_Start() 方法调用RegisterRoutes()方法。RegisterRoutes()方法负责创建了路由表。

    2.1K91

    ASP.NET MVC学习笔记02控制器和路由

    ASP.NET MVC会调用不同的控制器类(和其内部不同的操作方法)这取决于传入URL。 所使用的ASP.NET MVC的默认URL路由逻辑使用这样的格式来判定哪些代码以便调用。...通过路由传参 URL的Parameters,也就是参数传递部分。 修改Welcome方法,如下图,给welcome方法添加两个形参name和num,并通过htmlencode编码后输出。 ?...参数的自动装配 再修改一下welcome方法,将num改为id,输入url,把id写在开头,用“?”分割,传入name。 ? ASP.NET MVC路由自动匹配了ID这个参数,为什么呢?...看看上图中的 ASP.NET默认路由表,url: "{controller}/{action}/{id}",这一行已经添加了id这个参数,因此ASP.NET MVC会自动为我们匹配ID参数。...在ASP.NET MVC应用程序,通过参数传递路由数据是为更典型的应用(如同上面用 query string传递ID参数)。

    1.5K40

    Asp.net MVC 之 Contorllers(一)

    ASP.NET MVC中,每一个请求最终就是执行一个特殊类中的Action方法。Action的执行结果被传递给带有视图模版的视图子系统中。...在ASP.NET应用程序中使用的大多数的URL是由两部分组成:包含逻辑的物理网页的路径,和一些填充在查询字符串中的作为参数的数据。这种方式已经使用了有些年了,现在仍在被使用。...URI通过位置来标识资源,就是URL(Uniform Resource Locator)。URI通过名称标识资源,就变成了URN(Uniform Resource Name)。...第二个标记涉及这个组件(类)中需要调用的方法名最后,第三个标记标识传递参数 请求HTTP处理程序     在浏览器中输入一个URL http://localhost:9086/home/test/*,...此外,一个新的系统组件在运行时管道中截取的请求、 处理 URL,并触发的 ASP.NET MVC HTTP 处理程序。此组件是 URL 路由的 HTTP 模块。关于URL路由模块,下次再译。

    1.1K70

    MVC 到使用 ASP.NET Core 6.0 的Minimal API

    Startup MVC dotnet new webapi 新的 ASP.NET 模板取消了Startup类并利用了 C# 10 的顶级语句功能,因此我们有一个Program.cs包含所有引导代码的文件...定义路由和处理程序 MVCMVC 中,我们有两种[2]定义路由的方法,一种是通过约定,一种是使用属性。 基于约定的路由更常用于网站而不是 API,并包含mvc模板中。...参数可以利用 ASP.NET路由约束语法[3]来限制接受的值。 对于 API,建议使用基于属性的路由[4]。...MVCMVC 中,您可以将 JSON 从请求正文绑定到 .NET 类型,方法是将其作为参数传递给您的操作方法并使用[FromBody]属性对其进行修饰: [HttpPost("/payments"...还有一个出色的建议[6]是在传递方法组而不是内联 lambda 隐式生成端点名称。

    7.6K10

    Blazor 中的路由路由模板

    通过 ASP.NET MVC,只要请求的 URL 无法映射到物理服务器文件,路由组件就会启动。...此外,正如在 ASP.NET MVC 中发生的那样,解析 URL ,表中的路由将从最具体到最不具体进行评估,并且搜索在首次匹配停止。...下面是参数路线的示例: @page “/user/view/{Id}” URL 包含后跟 /user/view/ 的服务器名称,URL 模式匹配算法会触发此路由。...如果需要确保在应有参数的位置仅指定给定类型的值,则应选择路由约束。 如果熟悉任何风格的 ASP.NET MVC,那么路由约束并不是什么新鲜事。...但是,定位标记用于呈现菜单或导航栏,可能需要一些额外的工作来调整 CSS 样式以反映链接的状态。 内置的 Blazor NavLink 组件可以用于任何需要定位元素的地方,尤其是在菜单中。

    8.4K21

    《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(中)

    ,总会创建新实例 Scoped:在每一次请求时会创建服务的新实例,并在这个请求内一直共享这个实例 3.4 MVC MVC 是模型、视图、控制器的缩写,它是 Web 应用程序中一种常见的架构模式,最主要的优点是实现了关注分离...在 ASP.NET Core MVC 框架中,除了 Controller、Model 和 Action 外,它还包括路由、模型绑定、模型验证和过滤器等功能 路由的主要功能是根据预先配置的路由信息对客户端传来的请求进行路由映射...,映射完成后,再将请求传给对应的路由处理器处理 对于 ASP.NET Core MVC,定义路由的方法有以下两种: 基于约定的路由 特性路由 基于约定的路由需要在 Startup 类中指明,具体来说,应该在配置...Controller 需要依赖其他服务,通常的做法是使用构造函数注入所需要的服务,程序运行时,ASP.NET Core 会在创建 Controller 自动从其依赖注入的容器中获取所有依赖的服务,...Action,如果要仅为一个或少数几个 Action 添加过滤器,就得使用特性,ASP.NET Core 为每一种类型的过滤器都定义了相应的特性 如果以特性的方式使用包含依赖项的过滤器,就会出错,因为在自定义特性的构造函数中定义的接口类型的参数并不是有效的特性参数

    1.2K10

    ASP.NET Core 2.0 建立规范的 REST API -- 预备知识

    服务器 ASP.NET Core 服务器的作用是响应客户端发过来的请求, 这些请求会作为HttpContext传递进来....在Controller上使用[Route]属性就定义了该Controller下所有Action的路由基地址,每个Action可以包含一个或者多个相对的路由模板(地址),这些路由模板可以在[Http......这个把Http请求绑定到参数的过程叫做实体绑定。 例如: ? 其中id参数是定义在路由里的,而name参数路由里没有,但是仍然可以从查询参数中把name参数映射出来。...我们可以通过几种方式为其传递类型为Person的参数。 可以使用查询参数:/api/people?id=1&name=Dave 如果POST Json数据: ? ?...和中间件一样,ASP.NET Core MVC的过滤器也可以在请求管道的特定阶段的之前或之后执行某些代码。过滤器还可以有子管道,子管道里面包含着其它过滤器。

    1.7K00

    .NET MVC简单介绍

    三层架构中的UI层可以用ASP.Net MVC来实现。 约定大于配置 “约定大于配置”:恶心的“配置文件地狱”,基础阶段按照默认配置来,先不管复杂、难懂的“路由”等。...控制器的建立、视图的建立 :在Controllers文件夹下右键→【添加】→【控制器】→选择【MVC5控制器-空】,类的名字以Controller结尾,比如“TestController”,会自动在Views...:IndexReqModel(类名无所谓)包含Num1、Num2两个属性(只要不重名,大小写都可以)。...num1=1&num2=5”的时候,会找到Controllers下的TestController的Index方法去执行,把请求参数按照名字填充到Index方法的参数对象中(MVC引擎负责创建对象,给数据复制...@model (要小写) WebApplication2.Models.IndexRespModel表示传递过来的数据是IndexRespModel类型的,@Model(大写开头)指向传递过来的对象。

    1.2K10

    Asp.net MVC 之 Contorllers(二)

    一个简单的路由: /home/test 路由是一个常量字符串,并且他仅被一个路径是 home/test 的 URL 匹配。然而,大多数时候,我们处理的是包含一个或多个占位符的参数路由。...下面是ASP.NET MVC 应用程序中默认路由: {controller}/{action}/{id} 上面路由包含三个占位符,其中由分隔符分开。...处理路由 尝试匹配一个请求 URL 到定义的路由的时候,ASP.NET URL 路由模块采用了一些规则。最重要的规则是,路由必须按照定义在 Global.asax 中的顺序进行检查。...例如,将前面的代码添加到一个 ASP.NET MVC 应用程序的 Global.asax.cs 文件,然后运行,访问default.aspx页面,会出现一个 HTTP 404 错误。...属性路由 NuGet 的 ASP.NET MVC 5 中包含 AttributeRouting 。属性路由是所有有关使用属性直接在控制器的Action方法上定义的路由

    1.9K60

    Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图

    最后一个参数是一个匿名对象,用来生成路由数据 (在本例中,ID 为 4 的)。...VS自动创建编辑视图,它会查看Movie类并为类的每个属性创建用于Render的和的元素。...定义LINQ查询或修改查询条件(如调用Where 或OrderBy方法,不会执行 LINQ 查询。相反,查询执行会被延迟,这意味着表达式的计算延迟,直到取得实际的值或调用ToList方法。...如果您更改SearchIndex方法的签名,改为参数id,在Global.asax文件中设置的默认路由将使得: id参数将匹配{id}占位符。...如果您更改了的SearchIndex方法来测试如何传递路由绑定的 ID 参数,更改它,以便您的SearchIndex方法采用字符串searchString参数: public ActionResult

    4.3K100

    ASP.NET Core 基础知识】--路由和请求处理--路由概念(一)

    路由表中包含了每个路由路由模板、相关的控制器和动作方法信息。收到一个请求路由系统会查找路由表以确定如何映射该请求。...示例: 考虑一个使用ASP.NET Core的MVC框架的简单静态路由示例: // 静态路由配置 app.UseEndpoints(endpoints => { endpoints.MapControllerRoute...2.2 参数路由 参数路由是一种更灵活的路由配置方式,允许在路由模板中包含占位符,以捕获和传递动态的参数。这使得可以处理各种不同形式的URL,并根据用户提供的输入动态地调整路由的行为。...视图选择: 在MVC架构中,控制器通常负责选择合适的视图进行呈现。它决定了用户将看到什么内容,将请求的结果传递给视图进行展示。...响应构建: 控制器负责构建HTTP响应,其中包含将返回给用户的数据、视图或其他信息。这可能包括将模型数据传递给视图以生成HTML、JSON或其他格式的响应。

    40910

    ASP.NET Core MVC 概述

    如果将表示代码和业务逻辑组合在单个对象中,则每次更改用户界面都必须修改包含业务逻辑的对象。 这常常会引发错误,并且需要在每次进行细微的用户界面更改后重新测试业务逻辑。...功能 ASP.NET Core MVC 包括以下功能: 路由 模型绑定 模型验证 依赖关系注入 筛选器 区域 Web API 可测试性 Razor 视图引擎 强类型视图 标记帮助程序 视图组件 路由 ASP.NET...接收传入请求路由引擎分析 URL 并将其匹配到定义的 URL 格式之一,然后调用关联的控制器操作方法。...Core MVC 模型绑定将客户端请求数据(窗体值、路由数据、查询字符串参数、HTTP 头)转换到控制器可以处理的对象中。...强类型视图 可以基于模型强类型化 MVC 中的 Razor 视图。 控制器可以将强类型化的模型传递给视图,使视图具备类型检查和 IntelliSense 支持。

    6.4K20

    ASP.NET MVC路由扩展:路由映射

    ASP.NET路由系统旨在通过注册URL模板与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但是对于ASP.NET MVC应用来说,请求的目标不再是一个具体的物理文件,而是定义在某个Controller...出于自身路由特点的需要,ASP.NETASP.NET路由系统进行了相应的扩展。...MVC路由注册与具体的物理文件无关,所以MapRoute方法中并没有一个表示文件路径的physicalFile参数。...二、 实例演示:注册路由映射与查看路由信息 ASP.NET MVC通过定义在RouteCollectionExtensions中的扩展方法MapRoute进行路由映射,为了让读者对此有一个深刻的认识,我们来进行一个简单的实例演示...ASP.NET MVC路由展:路由映射 ASP.NET MVC路由扩展:链接和URL的生成

    1.4K100

    .NET 程序员如何学习Vue

    开发一个站点最基本的知识,我认为有以下几个: 页面组装 页面跳转 页面传值 接口调用 .NET 程序员通常会采用 Asp.NetAsp.Net MVC 来开发网站,对于上面四,在 .NET 中的对应关系如下...: 知识 Asp.Net Asp.Net MVC 页面组装 Aspx页面、用户控件、MasterPage 视图、分部视图 页面跳转 链接、Redirect 路由 页面传值 QueryString、Session...style scoped> data():组件中使用到的数据需要以对象的方式在 data() 函数中返回 watch:监听属性,上面例子中监听 formModel.password 的值,改变...,修改 errorMessage computed:计算属性,例子中 errorMessage 的值从空变成非空,或者从非空变成空才会触发 mounted:页面加载完成后执行,如果登录组件想要请求接口设置一个背景图...$emit ,本例中在 top-bar 组件中添加一个按钮,点击按钮传递参数到 home 组件,并改变 home 组件的 loginName的值。

    1.1K20
    领券