问题标签 [asp.net-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 回答
4953 浏览

c# - ASP.NET MVC:Html.Actionlink() 生成空链接

好的,我在使用 actionlink htmlhelper 时遇到了一些问题。

我有一些复杂的路由如下:

我的问题是生成与这些模式匹配的操作链接。eventname 参数实际上只是为了提供用户友好的链接。它什么也没做。

现在,当我尝试例如生成链接时。这显示了某个 groep 的仪表板。像:

我将使用以下操作链接:

我在 html 中给出的实际结果是:

我应该有的是这样的:

请多多包涵,我还是 ASP MVC 的新手。有人可以告诉我我做错了什么吗?

帮助将不胜感激!

0 投票
2 回答
1670 浏览

asp.net - 如何根据域/主机调整asp.net URL路由?

根据域/子域/主机调整在 global.asax Application_Start 事件中创建的路由表的路径目标的最佳方法是什么?以下在 IIS6 中有效,但在 IIS7 中,请求对象与 Application_Start 事件分离,因此不再有效:

0 投票
4 回答
1487 浏览

.net - 如何使用 ASP.NET 路由路由树形结构的 URL?

我想通过一些增强来实现与这个问题非常相似的东西。

有一个 ASP.NET MVC Web 应用程序。

我有一棵实体树。
例如,Page有一个名为 Children 的属性的类,其类型为IList<Page>。(Page类的一个实例对应于数据库中的一行。)

请注意,网站所有者可以随时添加新页面或删除现有页面,并且 URL 也应反映这些更改。

我想为Page数据库中的每个人分配一个唯一的 URL。
Page使用一个名为PageController.

示例网址:

你得到图片。
所以,我希望每个Page对象都有自己的 URL,等于其父 URL 加上自己的名称。
除此之外,我还希望能够将单个映射Page/(根)URL。

我想应用这些规则:

  1. 如果 URL 可以使用任何其他路由处理,或者文件系统中存在指定 URL 的文件,则让默认 URL 映射发生
  2. 如果虚拟路径提供程序可以处理 URL,则让其处理
  3. 如果没有其他,则将其他 URL 映射到PageController该类

我也发现了这个问题还有这个问题和这个问题,但它们并没有太大帮助,因为它们没有提供关于我的前两点的解释。

我看到以下可能的解决方案:

  • 为每个页面单独映射一条路线。
    这需要我在应用程序启动时遍历整个树,并将完全匹配的路由添加到路由表的末尾。
  • 我可以添加一个路由{*path}并编写一个IRouteHandler处理它的自定义,但是我看不出我该如何处理前两个规则,因为这个处理程序将处理所有事情。

到目前为止,第一个解决方案似乎是正确的,因为它也是最简单的。但是,即使在那种情况下,我也不确定如何PageController处理请求。

我非常感谢您对此的想法。

先感谢您!

编辑:我现在有时间检查我收到的每个答案的各个方面。我接受了尼尔的回答,因为他是对事情如何运作提供最佳解释的人。我还赞成所有其他答案,因为它们提供了好主意。

0 投票
2 回答
2256 浏览

asp.net-routing - GetRouteUrl 返回 null 并且 RedirectToRoute 抛出“没有为 RedirectToRoute 找到匹配的路由”。

返回空

throws InvalidOperationException("没有为 RedirectToRoute 找到匹配的路由。")

我放了一个断点并检查了System.Web.Routing.RouteTable.Routes我的路线。我可以在我的页面代码中毫无障碍地使用它们。这是怎么回事?

0 投票
2 回答
7428 浏览

asp.net - 如何以声明方式创建带有数据绑定参数的 RouteUrls?

我正在使用 ASP.NET 4(Web 表单,而不是 MVC)中的新路由功能。现在我有一个绑定到数据源的 asp:ListView。其中一个属性是ClientID我想用来从 ListView 项目链接到另一个页面的属性。在global.asax我定义了一条路线:

例如http://server/MyClientPage/2,如果 ClientID=2 存在,则它是一个有效的 URL。

在 ListView 项目中,我有一个 asp:HyperLink 以便我可以创建链接:

虽然这可行,但我更愿意通过使用 RouteUrl 表达式来使用 RouteName 而不是硬编码的路由。例如,使用常量 ClientID=2 我可以写:

现在我想知道是否可以将路由表达式语法和数据绑定语法结合起来。基本上我喜欢将2上面的常数替换为<%# Eval("ClientID") %>. 但是以天真的方式这样做......

...不起作用:<%# Eval("ClientID") %>不被评估但被视为字符串。到目前为止,使用几种引号也没有帮助(大多数情况下是解析器错误)。

问题:我在这里想要实现的目标有可能吗?如果是,正确的方法是什么?

先感谢您!

0 投票
1 回答
603 浏览

asp.net - 安全修剪是否适用于 Web 表单路由?

在我的 web.config 中,我配置了一个 SiteMapProvider,securityTrimmingEnabled="true"在我的主母版页上是一个asp:Menu绑定到asp:SiteMapDataSource. 此外,我已经配置了对子文件夹“Admin”中所有页面的受限访问(使用此子文件夹中的另一个 web.config)。

如果我将 sitemapNode 放在Web.sitemap...

...只有角色“管理员”的用户才能拥有与该 siteMapNode 相关的菜单项。所以这工作正常并且符合预期。

现在我在 Global.asax 中定义了一个 URL 路由来将物理文件映射到一个新的 URL:

但是当我在 SiteMap 文件中使用这个路由 URL 时......

...似乎安全修剪不起作用:菜单项对所有用户都是可见的。(但对页面的访问仍然受到限制,因此非管理员用户选择菜单项不会导航到受限页面。)

问题:到目前为止,我是否遗漏了任何设置来使安全修剪与 ASP.NET 4.0 Web 窗体中的 URL 路由一起工作?我做错什么了吗?有什么解决方法吗?

谢谢你的帮助!

0 投票
2 回答
1886 浏览

asp.net-mvc-2 - ASP.NET MVC 路由默认值

我在 global.asax 中定义了两条路线,如下所示

根据上面的定义,当用户请求 mysite.com/ 时 HomeController 的重定向动作应该被调用,其中:

我想将用户重定向到上面第二个定义的路由,所以我也为它指定了默认值,并为每一个指定了一些约束。但是当RedirectToRoute("UrlResolver")转弯时,没有默认值传递给第二条路线上的 routeConstraints 并No route in the route table matches the supplied values显示。

更新

我的文化路线约束:

现在值参数没有文化键/值,但路由参数有。

0 投票
1 回答
448 浏览

asp.net-mvc-2 - 如何在 ASP.NET MVC2 中使用下划线路由小写 URL('questions/add_to_favorites/123')?

ASP.NET MVC 2 控制器和操作使用 UpperCamelCase。

由于某些原因,包括 SO 在内的许多大型网站在 url 中使用小写(带下划线)作为控制器和操作。例子:

我想知道这是如何实现的。

默认路由器似乎不区分大小写,即。stackoverflow.com/questions/ask将毫无问题地定向到 Questions-controller 的 Ask() 方法。

但是,假设我们想直接questions/add_to_favorites访问 Questions-controller 的 AddToFavorites() 操作。

  1. 这是如何实现的?
  2. 现在是否需要使用Html.ActionLink("add_to_favorites") 而不是Html.ActionLink("AddToFavorites")使HTML中的链接指向questions/add_to_favorites而不是Questions/AddToFavorites

编辑:类似的帖子

支持下划线的一种方法是使用 ActionName 属性:

但是,这不适用于控制器。也许如果我们可以在请求到达路由机制之前以某种方式从请求中删除所有下划线,那么它会起作用。

0 投票
1 回答
11461 浏览

iis-7 - Direct different IP's to different pages on IIS7

Using IIS7, how do I direct internal private network IP's addresses to my web site while I direct external IP addresses to a "site under maintenance" page?

So far on IIS7 I've found the section in IIS named "IPv4 Address and Domain Restrictions" and I can add the 3 internal ranges to that as an allow range. That seems easy. Now how do I direct all other traffic to a static page such as app_offline.html that I have created. (I'm not actually going to use app_offline.html because that will obviously take the app offline for internal addresses as well.)

0 投票
3 回答
3517 浏览

asp.net - ASP.NET 4 Web 窗体路由图像

我正在使用 ASP.NET 4 Web 表单路由,例如这样:

所以网络地址可能看起来像:http://localhost/mywebsite/eng/home

在我网站的根目录中,我有一个文件夹“图像”。

当我在我的网站的根目录中时,图像显示工作,例如通过使用http://localhost/mywebsite/default.aspx

但是当使用路由时它不起作用,因为图像相对 url 将查看http://localhost/mywebsite/eng/images而不是http://localhost/mywebsite/images

有没有办法使用 ASP.NET 4 路由机制来防止这种情况?或者是对图像使用绝对网址的唯一方法?