问题标签 [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.
c# - 路由中的空间给出 404
我目前定义了这条路线(除其他外):“ {controller}/{action}/{id}/{designation} ”是:
- “id”我的主键
- “指定”仅用于 SEO,不考虑在内。
现在我的问题是:“ http://server/Home/Index/1/teste ”有效,但最后有空格的“ http://server/Home/Index/1/teste ”无效。
IIS 给了我一个404并且 mvc 甚至没有为这个请求启动。
有人经历过这种行为吗?我需要改变什么吗?
最诚挚的问候
asp.net-mvc - ASP.Net MVC 路由操作名称冲突
我们有一个处理艺术家和场地的网站,我们正在用 ASP.net MVC 开发它。
我们在文件夹 (Views/Artists/..)、ArtistsController、ArtistsRepository 中有我们的艺术家视图,并遵守 REST 操作名称,例如 Show、New、Delete 等。
当我们第一次模拟该站点时,在我们的测试环境中一切都运行良好,因为我们的测试 URL 是 /artists/Show/1209 但我们需要更改它以便网站显示为 /artists/Madonna 和 /artists/Foo-Fighters 等
但是,我们如何区分有效的艺术家名称和该控制器的动作名称?!例如,艺术家/PostComment 或艺术家/DeleteComment?我需要允许路由来处理这个。我们默认的 Show 路线是:
解决这个问题的一种方法是让我们的网站在 /artists 上明显运行,但将我们的控制器重命名为单数 - ArtistController - 而不是 ArtistsController。这将违背我们开始时使用的命名约定(但是,嘿!)。
您还有其他建议吗?如果可能的话,我们还可以根据动词进行路由(因此 PostComment 将是一个 POST,因此我们可能可以路由到该操作),但我不确定这是否可取,更不用说可能了。
谢谢
asp.net-mvc - ASP.Net MVC 路由传统 URL 将查询字符串 Id 传递给控制器操作
我们目前在 IIS6 上运行,但希望尽快迁移到 IIS 7。
我们正在将现有的 Web 表单站点迁移到 ASP.Net MVC。我们有很多遗留页面需要重定向到新的控制器。我遇到了这篇看起来很有趣的文章: http ://blog.eworldui.net/post/2008/04/ASPNET-MVC---Legacy-Url-Routing.aspx
所以我想我可以编写自己的路由处理程序,或者在控制器中进行重定向。后者有轻微气味。
但是,我不太确定如何处理来自遗留 url 的查询字符串值,理想情况下我需要将其传递给控制器的 Show() 方法。例如:
旧网址:
/Artists/ViewArtist.aspx?Id=4589
我希望它映射到:
ArtistsController 显示动作
实际上,我的 Show 操作采用艺术家姓名,因此我确实希望将用户从 Legacy URL 重定向到 /artists/Madonna
谢谢!
c# - 如何从保存的数据重建 ASP.NET MVC 中的 URL/路由?
我对 ASP.NET MVC 框架及其管道的不熟悉把我带到了这里,我感谢任何人阅读和考虑我的问题所需要的耐心!
好的,这是场景:我有一个应用程序,它有许多带有网格的页面,这些页面显示基于搜索的数据、从其他数据向下钻取、基于上下文特定数据的报告(即它们位于 Foo 的详细信息页面上,然后单击在显示与 Foo 相关的数据表的链接上)等。
从应用程序中的所有这些页面中,用户可以通过为其命名和描述来保存“报告”或网格。这并没有真正保存显示在网格中的数据,而是保存定义网格外观的参数,保存用于获取数据的参数,并保存定义“位置”的参数它们是应用程序(动作、控制器、路由)——基本上是一堆关于报告/网格以及如何构建它的元数据。
所有这些保存的报告都在一个列表中可用,在应用程序的某个页面上显示名称和描述,每个链接到一个通用 URL,如“/Reports/Saved/248”(其中 248 是报告的 ID)。
这是我需要帮助的部分:
当我通过 url “/Reports/Saved/248” 执行操作并将元数据从数据库中拉出该特定报告时,如何将该数据和请求重定向到用于显示的相同操作、控制器和路由最初保存报告的视图?本质上,我希望用户在同一个视图中查看报表,并使用与保存报表相同的 URL。如果可能的话,如果我能够基本上“调用”相同的操作,就好像我正在进行方法调用一样,这将是一件好事。
更新:不幸的是,我们的报告页面(即这些网格出现的页面)没有使用 RESTful URL - 例如,我们有一个我们称之为高级搜索页面的页面,它需要相当多的潜在参数(近 30 个)从包含选择列表、文本框等的表单中。当用户提交该页面时,我们对接受模型绑定器为我们构建的复杂类型的操作执行 POST - 同样的操作是我想在用户调用时调用的操作从数据库中选择已保存的高级搜索。这个例子集中体现了我的问题。
谢谢
asp.net-mvc - 在 ASP MVC 中向 URL 添加参数
我需要在控制器和操作之前有一个参数作为我的 ASP MVC URL 的一部分:
http://www.mydomain.com/ company1 /首页
或者
http://www.mydomain.com/ company1 /Clients/Detail/1
(理想情况下,我希望将其作为这样的子域:http:// company1 .mydomain.com/Clients/Detail/1 所以任何解决这个问题的答案也值得赞赏)
我将此参数称为帐户。我尝试在路由映射中添加类似这样的内容:“{account}/{controller}/{action}/{id}”,但在尝试类似http://www.mydomain.com/company1时出现 404 错误/家
这是 Global.asax 中的 RegisterRoutes:
在组织我的 Views 文件夹或 Controller 操作时,我需要做些什么特别的事情吗?
asp.net-mvc - 在 ASP MVC 中处理复杂的 URL
我有 - 我认为 - 在 ASP MVC 1.0 中处理的复杂 URL:我在大多数控制器中的所有操作始终需要两个参数:帐户和项目。这是每个行动的要求之上。这意味着一个典型的 URL 是这样的:
在此示例中: myaccount是帐户名称。projects可以是控制器,其他选项如位置、员工。project_id是myaccount中项目的 id ,站点可以是控制器,其他选项例如人员或付款。edit是一个动作,12是编辑的站点的 id。(希望这足够清楚)
现在一个选项是创建一个路由并将 project_id 和 account 传递给控制器的所有操作,方法是向所有操作添加两个额外的参数。这并不是真正需要的,而且我不确定两个控制器(项目和站点)是否会在这里工作。
我的理想情况是使用某种上下文来调用控制器操作并将 project_id 和 myaccount 存储在其中。然后可以以正常方式处理其余参数,例如:
关于如何/在哪里发生这种情况的任何想法?另外这将如何与 ActionLink 一起工作(即基于此上下文生成正确的链接)?
谢谢!
asp.net - 在路由控制器中如何获取路由“名称”
我在 asp.net 中使用路由来获取漂亮的 URL
当我在 global.asax 中定义路由时,我创建了两个使用相同控制器 (c#) 的不同路由:
(如何)是否可以从控制器内部确定将用户引导到该控制器的“关键”值是什么?或者是使用模式错误 - 如果这是更合适的解决方案,则可以直接将控制器子类化(再次)以区分两者并保留通用代码。
asp.net-mvc - MVC Routing - 使用路由部分切换视图
我有一系列看起来像的 URL
目前我已经设置了几条路线 - 每个 {ViewToUpdate} 一条,我想做的是将 {ViewToUpdate} 传递给我的 Action 处理程序,以便我可以压缩我的代码。代替:
我想要:
以下是我目前的路线:
如何正确设置路由定义以处理 {ViewToUpdate} 字符串以及仍然传递查询字符串?
TIA
asp.net-mvc - 为什么 ASP.NET MVC MapRoute 会弹出 Windows 身份验证对话框?
这让我很困惑,我认为这可能是微软 MVC 实现中的一个错误。我正在使用 VS2008 SP1 构建一个 MVC 网站。为了锁定我的网站,我将控制器编辑为如下所示:
我正在使用 ASP.NET 成员身份和表单身份验证。当我将代码发布到主机时,它会弹出一个 Windows 身份验证对话框。我一直在绞尽脑汁想弄清楚我可能做了什么编辑来导致这种情况。我几乎完全重写了我的应用程序,试图解决这个问题,并将其缩小到我的 Global.asax.cs 文件中的一个更改。首先让我向您展示(相关部分)错误版本:
当我在本地使用这条路线运行我的代码时,我的浏览器只是空白......登录页面永远不会显示。如果我在主机上运行我的应用程序,它会弹出一个 Windows 身份验证对话框。如果我将路由更改为:
一切正常。注意第 3 行的编辑,在我的 URL 字符串前面添加“Ideas/”。谁可以给我解释一下这个?我也可以通过从控制器中删除 Authorize 行(上面的第 3 行)来解决这个问题,但是我当然会失去安全性。
更新:这是我的完整会员部分:
asp.net-mvc - 如何在 asp.net MVC 中使用 Server.Transfer 方法?
我正在尝试将其用于登录页面。
但是我得到了异常->执行子请求/帐户/登录时出错。