问题标签 [asp.net-mvc-routing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
250 浏览

asp.net-mvc - 向 MVC 路由添加冗余信息

当您遇到此问题时,您会注意到问题的标题位于地址栏中,并且您单击的链接位于此处。我不确定确切的术语,因此很难搜索,但我该如何做类似的事情?也就是说,如何将数据添加到纯粹用于显示/搜索引擎的地址栏。

谢谢

0 投票
2 回答
8016 浏览

asp.net-mvc-routing - 如何防止 Url.RouteUrl(...) 从当前请求继承路由值

假设您有一个在购物车中显示产品的操作方法

在其他地方,在您Url.RouteUrl用来创建指向站点上其他页面的 HREF 链接的每个页面上显示的标头中:

testimonials-routeglobal.ascx由下面的第一条路线定义的。请注意,上面的调用RouteUrl不提供 a gender,但路由定义为默认值 'neutral',因此我们希望调用 Testimonials.Index("neutral")。

如果有人访问该页面/products/women,我们会得到一个 HREF。/testimonials/women 如果有人访问该页面/products,那么我们会得到一个空的 HREF(对 RouteUrl 的调用返回 null)。

但这没有意义不是吗?如果我们不为它提供路由值,testimonials-route应该默认为我们?'neutral'

事实证明,Url.RouteUrl(routeName, routeValues)辅助扩展将首先在其routeValues参数中查找gender路由值,如果在该字典中找不到它,它将查看我们所在的当前 URL(请记住,Url 是 UrlHelper 对象它具有可用的当前请求的上下文)。

如果我们在男士产品页面上,这可能会给我们一个男士推荐的链接,但如果我们没有在RouteUrl调用中传递值并明确指定“中性”,这可能不是我们想要的文件中的默认值global.asax.cs

在我们访问的情况下,/products/我们触发了'products-route'路由并Products(null)调用了该方法。当Url.RouteUrl()我们gender使用testimonials-route. 即使我们为genderin 'testimionials-route' 指定了默认值,它仍然使用这个 null 值,这会导致路由失败并RouteUrl返回 null。[注意:路由失败是因为我们对 (men|women|neutral) 有限制,而 null 不适合]

它实际上变得更可怕 - 因为“控制器”和“动作”可以以相同的方式继承。即使使用具有默认控制器的显式路由名称调用 RouteUrl(...),这也可能导致生成完全错误的控制器的 URL。

在这种情况下,一旦您弄清楚了,您可以通过多种方式轻松修复它,但在其他情况下可能会导致一些危险行为。这可能是设计使然,但它绝对是可怕的。

0 投票
1 回答
1141 浏览

asp.net-mvc - 如何更改 ASP.net MVC URL

有没有一种简单的方法来生成一个新的 Route-URL 而没有这些问题。

我目前正在处理通往同一视图的多条路线,所有路线都以 /{pagenumber} 结尾

我要做的就是将所有内容删除回最后一个反斜杠并替换数字。

我试图避免使用 URL Maker,因为分页似乎有点矫枉过正,但欢迎所有建议......

这是我用于分页的方法

  • 这其中的各个部分通常来自应用程序设置,我已将它们替换为要完整的数字。
0 投票
1 回答
996 浏览

asp.net-mvc - 表单发布到错误的 URL

原标题:无法修复配置错误的路线

我想根据过滤器(有 4 个可能的值)和用户输入的条件进行搜索。

我有以下路线:

和以下形式:

表单不是重定向到动作 Buscar,而是重定向到 SubLineasProductos 控制器中的动作 Index。我想我的路线错了,但我不知道如何修复它们。我已经阅读了这篇文章,并且我可以看到我的路线一切都很好。

我怎样才能解决这个问题?提前致谢。

编辑:使用 Phil 提供的工具,我可以看到,如果我测试类似的 URL

http://localhost/MyApp/SubLineasProductos/Buscar.aspx/nombre/block

它符合我想要的路线。但是当我运行我的应用程序并尝试使用在生成的 URL 具有表单之前发布的表单时:

http://localhost/MyApp/SubLineasProductos.aspx/Buscar?filtro=nombre&criterio=block

我该如何解决这个新问题?

0 投票
3 回答
504 浏览

asp.net-mvc - ASP.NET MVC 路由问题

我刚开始使用 ASP.NET MVC,我有两个路由问题。

  1. 如何在 ASP.NET MVC 中设置以下路由?

    我不想在实际 url 中指定控制器以使 url 更短。如果网址看起来像这样:

    这对我来说更有意义,因为我可以添加 CompanyController 并为 about-us、contact-us、staff-bios 设置 ActionResults 并返回适当的视图。我错过了什么?

  2. Global.asax 中的默认路由规则中的“默认”名称有什么用途?它有什么用吗?

谢谢!

0 投票
3 回答
6688 浏览

asp.net-mvc - ASP.NET MVC 路由 - 试图在 URL 中有一个名称

我目前有以下路线:

SpecialController 有一个方法:public ActionResult Index(int ID)

每当我将浏览器指向 时http://hostname/test/5,都会出现以下错误:

参数字典包含“SpecialController”中方法“System.Web.Mvc.ActionResult Index(Int32)”的不可空类型“System.Int32”的参数“ID”的空条目。要使参数可选,其类型应该是引用类型或 Nullable 类型。
参数名称:parameters
描述:当前web请求执行过程中发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

这是为什么?我使用了 mvccontrib 路由调试器,似乎可以按预期访问该路由。

0 投票
2 回答
2553 浏览

asp.net-mvc - ASP.NET MVC - 隐式表单操作

我有一个表单,它是部分视图的一部分,我需要根据包含表单的视图的上下文将它提交到不同的位置。我不能使用 Html.BeginForm 因为表单有一个 multipart/form-data 编码类型,所以自动填写操作是不可能的。

我可以调用一个简单的变量来填写当前的控制器/动作作为我的表单动作吗?我看到 ViewContext.RouteData.Values["action"], ViewContext.RouteData.Values["controller"] 会返回这些值,但是有更好的访问器吗?

谢谢!

0 投票
1 回答
555 浏览

asp.net-mvc - 我可以将新路线映射到 Global.asax 之外的 RouteCollection 吗?

在 Global.asax RegisterRoutes() 方法首次执行很久之后,我想偶尔在程序执行期间将新路由映射到 RouteCollection。

我怎样才能做到这一点?

0 投票
3 回答
11893 浏览

c# - ViewContext.RouteData.Values["action"] 在服务器上为空......在本地机器上工作正常

我有一个奇怪的问题,其中 ViewContext.RouteData.Values["action"] 在我的登台服务器上为空,但在我的开发机器(asp.net 开发服务器)上工作正常。

代码很简单:

我在 ViewContext.RouteData.Values["action"] 行上收到错误。错误是:

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

任何帮助表示赞赏。提前致谢。

0 投票
1 回答
55 浏览

asp.net-mvc - 在控制器操作内部/附近设置路由?

大约 10 个 stackoverflow.com 播客回复 Jeff 提到,他没有将他的路由连接到 global.asax 文件中,而是将它们放在他的控制器中,靠近这些路由将调用的操作。

如何做到这一点?

路由是否必须在路由到的控制器被击中之前注册?他在构造函数中这样做吗?我的头脑被鸡与蛋的问题搞糊涂了。